Revision 41e2ed46 ncclient/operations/rpc.py
b/ncclient/operations/rpc.py | ||
---|---|---|
46 | 46 |
req = self._build(op) |
47 | 47 |
self._session.send(req) |
48 | 48 |
if self._async: |
49 |
return self._reply_event |
|
50 |
else: |
|
49 | 51 |
self._reply_event.wait() |
50 | 52 |
self._reply.parse() |
51 | 53 |
return self._reply |
52 | 54 |
|
53 |
def deliver(self, raw):
|
|
55 |
def _set_reply(self, raw):
|
|
54 | 56 |
self._reply = RPCReply(raw) |
57 |
|
|
58 |
def _set_reply_event(self): |
|
55 | 59 |
self._reply_event.set() |
56 | 60 |
|
61 |
def _delivery_hook(self): |
|
62 |
'For subclasses' |
|
63 |
pass |
|
64 |
|
|
65 |
def deliver(self, raw): |
|
66 |
self._set_reply(raw) |
|
67 |
self._delivery_hook() |
|
68 |
self._set_reply_event() |
|
69 |
|
|
57 | 70 |
@property |
58 | 71 |
def has_reply(self): |
59 | 72 |
return self._reply_event.isSet() |
... | ... | |
63 | 76 |
return self._reply |
64 | 77 |
|
65 | 78 |
@property |
79 |
def is_async(self): |
|
80 |
return self._async |
|
81 |
|
|
82 |
@property |
|
66 | 83 |
def id(self): |
67 | 84 |
return self._id |
68 | 85 |
|
... | ... | |
113 | 130 |
def set_errback(self, errback): |
114 | 131 |
self._errback = errback |
115 | 132 |
|
116 |
def register(self, msgid, rpc):
|
|
117 |
self._id2rpc[msgid] = rpc
|
|
133 |
def register(self, id, rpc): |
|
134 |
self._id2rpc[id] = rpc |
|
118 | 135 |
|
119 | 136 |
def callback(self, root, raw): |
120 | 137 |
tag, attrs = root |
... | ... | |
126 | 143 |
try: |
127 | 144 |
rpc = self._id2rpc[id] |
128 | 145 |
rpc.deliver(raw) |
129 |
except: |
|
130 |
logger.warning('RPCReplyListener.callback: no RPC '
|
|
146 |
except KeyError:
|
|
147 |
logger.warning('[RPCReplyListener.callback] no RPC '
|
|
131 | 148 |
+ 'registered for message-id: [%s]' % id) |
149 |
logger.debug('[RPCReplyListener.callback] registered: %r ' |
|
150 |
% dict(self._id2rpc)) |
|
151 |
except Exception as e: |
|
152 |
logger.debug('[RPCReplyListener.callback] error - %r' % e) |
|
132 | 153 |
break |
133 | 154 |
else: |
134 | 155 |
logger.warning('<rpc-reply> without message-id received: %s' % raw) |
135 | 156 |
|
136 | 157 |
def errback(self, err): |
137 |
logger.error('RPCReplyListener.errback: %r' % err) |
|
138 | 158 |
if self._errback is not None: |
139 | 159 |
self._errback(err) |
Also available in: Unified diff