made content module object-oriented; lots of code organization changes overall
[ncclient] / ncclient / listeners.py
index 3169746..096a46e 100644 (file)
@@ -32,13 +32,12 @@ class SessionListener(object):
     def __init__(self):
         self._id2rpc = WeakValueDictionary()
         self._expecting_close = False
-        self._subscription = None
+        sself._notification_rpc_id = None
     
     def __str__(self):
         return 'SessionListener'
     
-    def set_subscription(self, id):   
-        self._subscription = id
+    
     
     def expect_close(self):
         self._expecting_close = True
@@ -68,6 +67,27 @@ class SessionListener(object):
             if not self._expecting_close:
                 raise err
 
+
+class HelloListener:
+    
+    def __str__(self):
+        return 'HelloListener'
+        
+    def __init__(self, session):
+        self._session = session
+    
+    def reply(self, data):
+        try:
+            id, capabilities = content.Hello.parse(data)
+            logger.debug('HelloListener: session_id: %s; capabilities: %s', id, capabilities)
+            self._session.initialize(id, capabilities)
+        except Exception as e:
+            self._session.initialize_error(e)
+    
+    def error(self, err):
+        self._session.initialize_error(err)
+
+
 class DebugListener:
     
     def __str__(self):
@@ -77,4 +97,4 @@ class DebugListener:
         logger.debug('DebugListener:reply:\n%s' % raw)
     
     def error(self, err):
-        logger.debug('DebugListener:error:\n%s' % err)
+        logger.debug('DebugListener:error:\n%s' % err)
\ No newline at end of file