@@ -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