MCPcopy Create free account
hub / github.com/EasyIME/PIME / _PerMessageDeflateDecompressor

Class _PerMessageDeflateDecompressor

python/python3/tornado/websocket.py:756–791  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

754
755
756class _PerMessageDeflateDecompressor(object):
757 def __init__(
758 self,
759 persistent: bool,
760 max_wbits: Optional[int],
761 max_message_size: int,
762 compression_options: Optional[Dict[str, Any]] = None,
763 ) -> None:
764 self._max_message_size = max_message_size
765 if max_wbits is None:
766 max_wbits = zlib.MAX_WBITS
767 if not (8 <= max_wbits <= zlib.MAX_WBITS):
768 raise ValueError(
769 "Invalid max_wbits value %r; allowed range 8-%d",
770 max_wbits,
771 zlib.MAX_WBITS,
772 )
773 self._max_wbits = max_wbits
774 if persistent:
775 self._decompressor = (
776 self._create_decompressor()
777 ) # type: Optional[_Decompressor]
778 else:
779 self._decompressor = None
780
781 def _create_decompressor(self) -> "_Decompressor":
782 return zlib.decompressobj(-self._max_wbits)
783
784 def decompress(self, data: bytes) -> bytes:
785 decompressor = self._decompressor or self._create_decompressor()
786 result = decompressor.decompress(
787 data + b"\x00\x00\xff\xff", self._max_message_size
788 )
789 if decompressor.unconsumed_tail:
790 raise _DecompressTooLargeError()
791 return result
792
793
794class WebSocketProtocol13(WebSocketProtocol):

Callers 1

_create_compressorsMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected