Skip to content

Commit 3e83ae6

Browse files
committed
feat: MsgPackPacket._configure
1 parent f4b635e commit 3e83ae6

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

src/socketio/msgpack_packet.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,33 @@ class MsgPackPacket(packet.Packet):
77

88
def encode(self):
99
"""Encode the packet for transmission."""
10-
return msgpack.dumps(self._to_dict())
10+
return self._encode()
11+
12+
def _encode(self, **kwargs):
13+
return _msgpack.dumps(self._to_dict(), **kwargs)
1114

1215
def decode(self, encoded_packet):
1316
"""Decode a transmitted package."""
14-
decoded = msgpack.loads(encoded_packet)
17+
return self._decode(encoded_packet)
18+
19+
def _decode(self, encoded_packet, **kwargs):
20+
decoded = msgpack.loads(encoded_packet, **kwargs)
1521
self.packet_type = decoded['type']
1622
self.data = decoded.get('data')
1723
self.id = decoded.get('id')
1824
self.namespace = decoded['nsp']
25+
26+
@classmethod
27+
def _configure(cls, *args, **kwargs):
28+
dumps_default = kwargs.pop('dumps_default', None)
29+
ext_hook = kwargs.pop('ext_hook', msgpack.ExtType)
30+
31+
class ConfiguredMsgPackPacket(cls):
32+
def _encode(self, **kwargs):
33+
kwargs.setdefault('default', dumps_default)
34+
return super()._encode(**kwargs)
35+
def _decode(self, encoded_packet, **kwargs):
36+
kwargs.setdefault('ext_hook', ext_hook)
37+
return super()._decode(encoded_packet, **kwargs)
38+
39+
return ConfiguredMsgPackPacket

0 commit comments

Comments
 (0)