Skip to content

Commit 82c5fb7

Browse files
committed
Fix multi-threading bugs. Now Session related objects create an Loop per thread.
1 parent 0d20bf9 commit 82c5fb7

3 files changed

Lines changed: 9 additions & 8 deletions

File tree

msgpackrpc/client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from msgpackrpc import loop
1+
from msgpackrpc import Loop
22
from msgpackrpc import session
33
from msgpackrpc.transport import tcp
44

@@ -7,7 +7,8 @@ class Client(session.Session):
77
Client is usaful for MessagePack RPC API.
88
"""
99

10-
def __init__(self, address, timeout=10, loop=loop.Loop(), builder=tcp):
10+
def __init__(self, address, timeout=10, loop=None, builder=tcp):
11+
loop = loop or Loop()
1112
session.Session.__init__(self, address, timeout, loop, builder)
1213

1314
if timeout:

msgpackrpc/server.py

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

33
from msgpackrpc import inPy3k
44
from msgpackrpc import error
5-
from msgpackrpc import loop
5+
from msgpackrpc import Loop
66
from msgpackrpc import message
77
from msgpackrpc import session
88
from msgpackrpc.transport import tcp
@@ -12,8 +12,8 @@ class Server(session.Session):
1212
Server is usaful for MessagePack RPC Server.
1313
"""
1414

15-
def __init__(self, dispatcher, loop=loop.Loop(), builder=tcp):
16-
self._loop = loop
15+
def __init__(self, dispatcher, loop=None, builder=tcp):
16+
self._loop = loop or Loop()
1717
self._builder = builder
1818
self._listeners = []
1919
self._dispatcher = dispatcher

msgpackrpc/session.py

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

33
from msgpackrpc import inPy3k
4-
from msgpackrpc import loop
4+
from msgpackrpc import Loop
55
from msgpackrpc import message
66
from msgpackrpc.error import RPCError
77
from msgpackrpc.future import Future
@@ -21,14 +21,14 @@ class Session(object):
2121
result to the corresponding future.
2222
"""
2323

24-
def __init__(self, address, timeout, loop=loop.Loop(), builder=tcp):
24+
def __init__(self, address, timeout, loop=None, builder=tcp):
2525
"""\
2626
:param address: address of the server.
2727
:param loop: context object.
2828
:param builder: builder for creating transport layer
2929
"""
3030

31-
self._loop = loop
31+
self._loop = loop or Loop()
3232
self._address = address
3333
self._timeout = timeout
3434
self._transport = builder.build_transport(self)

0 commit comments

Comments
 (0)