Skip to content

Commit 63bea50

Browse files
committed
Support Python 3
1 parent aad5da6 commit 63bea50

5 files changed

Lines changed: 26 additions & 7 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ MessagePack RPC implementation based on Tornado.
1616

1717
# Dependent modules
1818

19-
* msgpack-python (0.1.10)
19+
* msgpack-python (0.1.12)
2020
* tornado (2.1.1)
2121

2222
# TODO

msgpackrpc/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import sys
2+
3+
inPy3k = sys.version_info[0] == 3
4+
15
from pkg_resources import get_distribution, DistributionNotFound
26

37
try:

msgpackrpc/server.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import msgpack
22

3+
from msgpackrpc import inPy3k
34
from msgpackrpc import error
45
from msgpackrpc import loop
56
from msgpackrpc import message
@@ -12,7 +13,6 @@ class Server(session.Session):
1213
"""
1314

1415
def __init__(self, dispatcher, loop=loop.Loop(), builder=tcp):
15-
#session.Session.__init__(self, address, timeout, loop, builder)
1616
self._loop = loop
1717
self._builder = builder
1818
self._listeners = []
@@ -32,7 +32,6 @@ def stop(self):
3232
def close(self):
3333
for listener in self._listeners:
3434
listener.close()
35-
#session.Session.close(self)
3635

3736
def on_request(self, sendable, msgid, method, param):
3837
self.dispatch(method, param, _Responder(sendable, msgid))
@@ -42,6 +41,8 @@ def on_notify(self, method, param):
4241

4342
def dispatch(self, method, param, responder):
4443
try:
44+
if inPy3k:
45+
method = method.decode("utf-8")
4546
if not hasattr(self._dispatcher, method):
4647
raise error.NoMethodError("{0} not found".format(method))
4748
responder.set_result(getattr(self._dispatcher, method)(*param))

msgpackrpc/session.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import msgpack
22

3+
from msgpackrpc import inPy3k
34
from msgpackrpc import loop
45
from msgpackrpc import message
56
from msgpackrpc.error import RPCError
@@ -46,7 +47,7 @@ def call_async(self, method, *args):
4647

4748
def send_request(self, method, args):
4849
# need lock?
49-
msgid = self._generator.next()
50+
msgid = next(self._generator)
5051
future = Future(self._loop, self._timeout)
5152
self._request_table[msgid] = future
5253
self._transport.send_message([message.REQUEST, msgid, method, args])
@@ -71,8 +72,15 @@ def on_connect_failed(self, reason):
7172
Called by the transport layer.
7273
"""
7374

75+
def _iteritems(dic): # ugly!!!!!!
76+
if inPy3k:
77+
return dic.items()
78+
else:
79+
return dic.iteritems()
80+
7481
# set error for all requests
75-
for msgid, future in self._request_table.iteritems():
82+
#for msgid, future in self._request_table.iteritems():
83+
for msgid, future in _iteritems(self._request_table):
7684
future.set_error(reason)
7785

7886
self._request_table = {}
@@ -116,6 +124,7 @@ def step_timeout(self):
116124
future.set_error("Request timed out")
117125
self._loop.start()
118126

127+
119128
def _NoSyncIDGenerator():
120129
"""\
121130
Message ID Generator.

test/test_msgpackrpc.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import helper
55
import msgpackrpc
6+
from msgpackrpc import inPy3k
67

78

89
class TestMessagePackRPC(unittest.TestCase):
@@ -40,11 +41,15 @@ def tearDown(self):
4041

4142
def test_hello(self):
4243
client = self.setup_env();
43-
self.assertEqual(client.call('hello'), "world", "hello result is incorrect")
44+
result = client.call('hello')
45+
if inPy3k:
46+
result = result.decode("utf-8")
47+
self.assertEqual(result, "world", "hello result is incorrect")
4448

4549
def test_add(self):
4650
client = self.setup_env();
47-
self.assertEqual(client.call('sum', 1, 2), 3, "sum result is incorrect")
51+
result = client.call('sum', 1, 2)
52+
self.assertEqual(result, 3, "sum result is incorrect")
4853

4954

5055
if __name__ == '__main__':

0 commit comments

Comments
 (0)