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