88from msgpackrpc import error
99
1010
11- def build_transport (session , reconnect_limit = 5 ):
12- return ClientTransport (session , session .address , reconnect_limit )
13-
14-
1511class BaseSocket (object ):
16- def __init__ (self , stream ):
12+ def __init__ (self , stream , encodings ):
1713 self ._stream = stream
18- self ._packer = msgpack .Packer ()
19- self ._unpacker = msgpack .Unpacker ()
14+ self ._packer = msgpack .Packer (encoding = encodings [ 0 ] )
15+ self ._unpacker = msgpack .Unpacker (encoding = encodings [ 1 ] )
2016
2117 def close (self ):
2218 self ._stream .close ()
@@ -55,8 +51,8 @@ def on_notify(self, method, param):
5551
5652
5753class ClientSocket (BaseSocket ):
58- def __init__ (self , stream , transport ):
59- BaseSocket .__init__ (self , stream )
54+ def __init__ (self , stream , transport , encodings ):
55+ BaseSocket .__init__ (self , stream , encodings )
6056 self ._transport = transport
6157 self ._stream .set_close_callback (self .on_close )
6258
@@ -78,9 +74,10 @@ def on_response(self, msgid, error, result):
7874
7975
8076class ClientTransport (object ):
81- def __init__ (self , session , address , reconnect_limit ):
77+ def __init__ (self , session , address , reconnect_limit , encodings = ( 'utf-8' , None ) ):
8278 self ._session = session
8379 self ._address = address
80+ self ._encodings = encodings
8481 self ._reconnect_limit = reconnect_limit ;
8582
8683 self ._connecting = 0
@@ -99,7 +96,7 @@ def send_message(self, message, callback=None):
9996
10097 def connect (self ):
10198 stream = IOStream (self ._address .socket (), io_loop = self ._session ._loop ._ioloop )
102- socket = ClientSocket (stream , self )
99+ socket = ClientSocket (stream , self , self . _encodings )
103100 socket .connect ();
104101
105102 def close (self ):
@@ -134,8 +131,8 @@ def on_close(self, sock):
134131
135132
136133class ServerSocket (BaseSocket ):
137- def __init__ (self , stream , transport ):
138- BaseSocket .__init__ (self , stream )
134+ def __init__ (self , stream , transport , encodings ):
135+ BaseSocket .__init__ (self , stream , encodings )
139136 self ._transport = transport
140137 self ._stream .read_until_close (self .on_read , self .on_read )
141138
@@ -150,21 +147,23 @@ def on_notify(self, method, param):
150147
151148
152149class MessagePackServer (netutil .TCPServer ):
153- def __init__ (self , transport , io_loop = None ):
150+ def __init__ (self , transport , io_loop = None , encodings = None ):
154151 self ._transport = transport
152+ self ._encodings = encodings
155153 netutil .TCPServer .__init__ (self , io_loop = io_loop )
156154
157155 def handle_stream (self , stream , address ):
158- ServerSocket (stream , self ._transport )
156+ ServerSocket (stream , self ._transport , self . _encodings )
159157
160158
161159class ServerTransport (object ):
162- def __init__ (self , address ):
160+ def __init__ (self , address , encodings = ( 'utf-8' , None ) ):
163161 self ._address = address ;
162+ self ._encodings = encodings
164163
165164 def listen (self , server ):
166165 self ._server = server ;
167- self ._mp_server = MessagePackServer (self , io_loop = self ._server ._loop ._ioloop )
166+ self ._mp_server = MessagePackServer (self , io_loop = self ._server ._loop ._ioloop , encodings = self . _encodings )
168167 self ._mp_server .listen (self ._address .port )
169168
170169 def close (self ):
0 commit comments