def __init__(self):
self._id2rpc = {}
- self._subscription_id = None # notifications are delivered to the rpc
- # that created the subscription
+ self._sub_id = None # message-id of <create-subscription> request
def set_subscription(self, id):
self._subscription = id
+ def register(self, id, op):
+ self._id2rpc[id] = op
+
+ def unregister(self, id):
+ del self._id2prc[id]
+
+ ### Events
+
def reply(self, raw):
- id, is_notification = rpc.parse(raw)
- if is_notification:
- self._id2rpc[self._subscription_id].event(raw)
- else:
+ id = rpc.parse(raw)
+ if id:
self._id2rpc[id]._deliver(raw)
- del self._id2rpc[id]
+ else:
+ self._id2rpc[self._sub_id]._notify(raw)
- def error(self, buf):
- pass
+ def close(self, buf):
+ pass # TODO
# See the License for the specific language governing permissions and
# limitations under the License.
-import content
-
from threading import Event
-from listener import RPCReplyListener
+from listener import SessionListener
class RPC:
@property
def listener(self):
if RPC.listeners[self._sid] is None:
- RPC.listeners[self.sid] = listener.RPCReplyListener()
+ RPC.listeners[self.sid] = SessionListener()
return RPC.listeners[self._sid]
-
- @property
- def ok(self):
- pass
-
+
def _next_id(self):
RPC.current_id[self._session.id] = RPC.current_id.get(self._session.id, 0) + 1
return RPC.current_id[self._sid]
-
-class RPCReply:
-
- def __init__(self, id, raw):
- self._id = id
- self._raw = raw
-
- @property
- def id(self):
- return self._id
-
-class RPCError(NETCONFError):
- pass
# limitations under the License.
import logging
+
+import content
+
from threading import Thread, Event
from Queue import Queue
from capability import CAPABILITIES
-from content import hello
from error import ClientError
from subject import Subject
self._session.remove_listener(self)
self._session._init_event.set()
- ### Events
-
def reply(self, data):
err = None
try:
- id, capabilities = hello.parse(data)
+ id, capabilities = content.parse_hello(data)
logger.debug('session_id: %s | capabilities: \n%s', id, capabilities)
self._session._id, self._session.capabilities = id, capabilities
except Exception as e:
# start the subclass' main loop
self.start()
# queue client's hello message for sending
- self.send(hello.make(self._client_capabilities))
+ self.send(content.make_hello(self._client_capabilities))
# we expect server's hello message, wait for _init_event to be set by HelloListener
self._init_event.wait()
# there may have been an error
import logging
-logger = logging.getLogger('ncclient.listener')
+logger = logging.getLogger('ncclient.subject')
class Subject: