def _do_decode()

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