in src/dubbo/protocol/triple/coders.py [0:0]
def _do_decode(self) -> None:
"""
Deliver the accumulated bytes to the listener, processing the header and payload as necessary.
"""
if self._decoding:
return
self._decoding = True
try:
while self._has_enough_bytes():
if self._state == HEADER:
self._process_header()
elif self._state == PAYLOAD:
self._process_payload()
if self._closing:
if not self._closed:
self._closed = True
self._accumulate = None
self._listener.close()
finally:
self._decoding = False