[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