restructured and better
authorShikhar Bhushan <shikhar@schmizz.net>
Mon, 20 Apr 2009 07:11:58 +0000 (07:11 +0000)
committerShikhar Bhushan <shikhar@schmizz.net>
Mon, 20 Apr 2009 07:11:58 +0000 (07:11 +0000)
git-svn-id: http://ncclient.googlecode.com/svn/trunk@31 6dbcf712-26ac-11de-a2f3-1373824ab735

ncclient/listener.py
ncclient/rpc.py
ncclient/session.py
ncclient/subject.py

index 695c2e0..6ed2481 100644 (file)
@@ -18,19 +18,25 @@ class SessionListener:
 
     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
index a91fe65..173475f 100644 (file)
 # 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:
     
@@ -52,26 +50,9 @@ 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
index 77fc6b8..bdd9f3d 100644 (file)
 # 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
 
@@ -80,12 +82,10 @@ class Session(Thread, 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:
@@ -103,7 +103,7 @@ class Session(Thread, Subject):
         # 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
index 32012f8..97c1058 100644 (file)
@@ -16,7 +16,7 @@ from threading import Lock
 
 import logging
 
-logger = logging.getLogger('ncclient.listener')
+logger = logging.getLogger('ncclient.subject')
 
 class Subject: