[Uludag-commits] r10087 - trunk/comar/api/comar
svn-uludag at uludag.org.tr
svn-uludag at uludag.org.tr
2 Kas 2006 Per 10:49:23 EET
Author: gurer
Date: Thu Nov 2 10:49:23 2006
New Revision: 10087
Modified:
trunk/comar/api/comar/__init__.py
Log:
exception düzenlemesi, fixy #2
Modified: trunk/comar/api/comar/__init__.py
=================================================================
--- trunk/comar/api/comar/__init__.py (original)
+++ trunk/comar/api/comar/__init__.py Thu Nov 2 10:49:23 2006
@@ -21,7 +21,12 @@
import select
import struct
-class Error(Exception):
+class CannotConnect(Exception):
+ """Connection to the comar failed"""
+ pass
+
+class LinkClosed(Exception):
+ """Connection with comar is closed"""
pass
@@ -113,7 +118,7 @@
self.sock = socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)
self.sock.connect(sockname)
except:
- raise Error('Cannot connect to the COMAR daemon')
+ raise CannotConnect('Connection to COMAR socket %s failed' % sockname)
def __pack(self, cmd, id, args):
size = 0
@@ -130,6 +135,16 @@
pak = struct.pack(fmt, (cmd << 24) | size, id, *args2)
return pak
+ def __recv(self, size):
+ data = ""
+ while size:
+ tmp = self.sock.recv(size, socket.MSG_WAITALL)
+ if tmp == "":
+ raise LinkClosed("recv failed at %d of %d" % (size, len(data)))
+ data += tmp
+ size -= len(tmp)
+ return data
+
def read(self):
"""Read a reply from comar.
@@ -158,18 +173,12 @@
fds = select.select([self.sock], [], [], 0)
if fds[0] == []:
return None
- try:
- data = self.sock.recv(8, socket.MSG_WAITALL)
- except:
- raise
+ data = self.__recv(8)
head = struct.unpack('!ii', str(data))
cmd = head[0] >> 24
size = head[0] & 0x00ffffff
if size:
- try:
- data = self.sock.recv(size, socket.MSG_WAITALL)
- except:
- raise Error('Connection closed')
+ data = self.__recv(size)
else:
data = None
Uludag-commits mesaj listesiyle ilgili
daha fazla bilgi