[svn] commit: r153 - /branches/f2f200910/src/lib/cc/python/ISC/CC/session.py

BIND 10 source code commits bind10-changes at lists.isc.org
Thu Oct 29 00:06:34 UTC 2009


Author: jelte
Date: Thu Oct 29 00:06:34 2009
New Revision: 153

Log:
update from trunk

Modified:
    branches/f2f200910/src/lib/cc/python/ISC/CC/session.py

Modified: branches/f2f200910/src/lib/cc/python/ISC/CC/session.py
==============================================================================
--- branches/f2f200910/src/lib/cc/python/ISC/CC/session.py (original)
+++ branches/f2f200910/src/lib/cc/python/ISC/CC/session.py Thu Oct 29 00:06:34 2009
@@ -20,6 +20,7 @@
 import Message
 
 class ProtocolError(Exception): pass
+class NetworkError(Exception): pass
 class SessionError(Exception): pass
 
 class Session:
@@ -73,8 +74,8 @@
                 data = self._socket.recv(length)
             except:
                 return None
-            if not data: # server closed connection
-                return None
+            if data == "": # server closed connection
+                raise ProtocolError("Read of 0 bytes: connection closed")
 
             self._recvbuffer += data
             if len(self._recvbuffer) < 4:
@@ -84,7 +85,12 @@
 
         length = self._recvlength - len(self._recvbuffer)
         while (length > 0):
-            data = self._socket.recv(length)
+            try:
+                data = self._socket.recv(length)
+            except:
+                return None
+            if data == "": # server closed connection
+                raise ProtocolError("Read of 0 bytes: connection closed")
             self._recvbuffer += data
             length -= len(data)
         data = self._recvbuffer
@@ -112,15 +118,17 @@
         })
 
     def group_sendmsg(self, msg, group, instance = "*", to = "*"):
+        seq = self._next_sequence()
         self.sendmsg({
             "type": "send",
             "from": self._lname,
             "to": to,
             "group": group,
             "instance": instance,
-            "seq": self._next_sequence(),
+            "seq": seq,
             "msg": Message.to_wire(msg),
         })
+        return seq
 
     def group_recvmsg(self, nonblock = True):
         msg = self.recvmsg(nonblock)
@@ -129,6 +137,20 @@
         data = Message.from_wire(msg["msg"])
         return (data, msg)
 
+    def group_reply(self, routing, msg):
+        seq = self._next_sequence()
+        self.sendmsg({
+            "type": "send",
+            "from": self._lname,
+            "to": routing["from"],
+            "group": routing["group"],
+            "instance": routing["instance"],
+            "seq": seq,
+            "reply": routing["seq"],
+            "msg": Message.to_wire(msg),
+        })
+        return seq
+
 if __name__ == "__main__":
     import doctest
     doctest.testmod()




More information about the bind10-changes mailing list