Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3ac94e9

Browse files
committed
Some copy/paste factorized
1 parent 04ed696 commit 3ac94e9

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

zerorpc/core.py

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,7 @@ def __init__(self, channel, methods=None, name=None, pool_size=None,
5151
self._name = name or repr(methods)
5252
self._task_pool = gevent.pool.Pool(size=pool_size)
5353
self._acceptor_task = None
54-
55-
if hasattr(methods, '__getitem__'):
56-
self._methods = methods
57-
else:
58-
server_methods = set(getattr(self, k) for k in dir(Server) if not
59-
k.startswith('_'))
60-
self._methods = dict((k, getattr(methods, k))
61-
for k in dir(methods)
62-
if callable(getattr(methods, k))
63-
and not k.startswith('_')
64-
and getattr(methods, k) not in server_methods
65-
)
54+
self._methods = self._zerorpc_filter_methods(ServerBase, self, methods)
6655

6756
self._inject_builtins()
6857
self._heartbeat_freq = heartbeat
@@ -71,6 +60,19 @@ def __init__(self, channel, methods=None, name=None, pool_size=None,
7160
if not isinstance(functor, DecoratorBase):
7261
self._methods[k] = rep(functor)
7362

63+
@staticmethod
64+
def _zerorpc_filter_methods(cls, self, methods):
65+
if hasattr(methods, '__getitem__'):
66+
return methods
67+
server_methods = set(getattr(self, k) for k in dir(cls) if not
68+
k.startswith('_'))
69+
return dict((k, getattr(methods, k))
70+
for k in dir(methods)
71+
if callable(getattr(methods, k))
72+
and not k.startswith('_')
73+
and getattr(methods, k) not in server_methods
74+
)
75+
7476
def __del__(self):
7577
self.close()
7678

@@ -324,6 +326,9 @@ class Server(SocketBase, ServerBase):
324326
def __init__(self, methods=None, name=None, context=None, pool_size=None,
325327
heartbeat=5):
326328
SocketBase.__init__(self, zmq.XREP, context)
329+
if methods is None:
330+
methods = self
331+
methods = ServerBase._zerorpc_filter_methods(Server, self, methods)
327332
ServerBase.__init__(self, self._events, methods, name, pool_size, heartbeat)
328333

329334
def close(self):
@@ -366,18 +371,7 @@ def __init__(self, methods=None, name=None, context=None,
366371
if methods is None:
367372
methods = self
368373

369-
if hasattr(methods, '__getitem__'):
370-
self._methods = methods
371-
else:
372-
server_methods = set(getattr(self, k)
373-
for k in dir(Puller) if not k.startswith('_'))
374-
self._methods = dict((k, getattr(methods, k))
375-
for k in dir(methods)
376-
if callable(getattr(methods, k))
377-
and not k.startswith('_')
378-
and getattr(methods, k) not in server_methods
379-
)
380-
374+
self._methods = ServerBase._zerorpc_filter_methods(Puller, self, methods)
381375
self._receiver_task = None
382376

383377
def close(self):

0 commit comments

Comments
 (0)