@@ -51,18 +51,7 @@ def __init__(self, channel, methods=None, name=None, pool_size=None,
51
51
self ._name = name or repr (methods )
52
52
self ._task_pool = gevent .pool .Pool (size = pool_size )
53
53
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 )
66
55
67
56
self ._inject_builtins ()
68
57
self ._heartbeat_freq = heartbeat
@@ -71,6 +60,19 @@ def __init__(self, channel, methods=None, name=None, pool_size=None,
71
60
if not isinstance (functor , DecoratorBase ):
72
61
self ._methods [k ] = rep (functor )
73
62
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
+
74
76
def __del__ (self ):
75
77
self .close ()
76
78
@@ -324,6 +326,9 @@ class Server(SocketBase, ServerBase):
324
326
def __init__ (self , methods = None , name = None , context = None , pool_size = None ,
325
327
heartbeat = 5 ):
326
328
SocketBase .__init__ (self , zmq .XREP , context )
329
+ if methods is None :
330
+ methods = self
331
+ methods = ServerBase ._zerorpc_filter_methods (Server , self , methods )
327
332
ServerBase .__init__ (self , self ._events , methods , name , pool_size , heartbeat )
328
333
329
334
def close (self ):
@@ -366,18 +371,7 @@ def __init__(self, methods=None, name=None, context=None,
366
371
if methods is None :
367
372
methods = self
368
373
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 )
381
375
self ._receiver_task = None
382
376
383
377
def close (self ):
0 commit comments