[Initng-svn] r3233 - initng/trunk/plugins/ngcs

svn at initng.thinktux.net svn at initng.thinktux.net
Tue Mar 7 15:13:47 CET 2006


Author: makomk
Date: Tue Mar  7 15:13:47 2006
New Revision: 3233

Modified:
   initng/trunk/plugins/ngcs/ngcs.py   (contents, props changed)
Log:
Various minor ngcs improvements


Modified: initng/trunk/plugins/ngcs/ngcs.py
==============================================================================
--- initng/trunk/plugins/ngcs/ngcs.py	(original)
+++ initng/trunk/plugins/ngcs/ngcs.py	Tue Mar  7 15:13:47 2006
@@ -83,8 +83,12 @@
         self.send(0, cmd)
     
     def send(self, chan, msg):
-        msg = ngcs_pack(msg)
-        self._sendbuf += struct.pack("@iii",chan,msg.typecode,len(msg.data)) + msg.data
+        if isinstance(msg, NgcsEOF):
+            assert msg.val < 0
+            self._sendbuf += struct.pack("@iii",chan,NGCS_TYPE_NONE,msg.val)
+        else:
+            msg = ngcs_pack(msg)
+            self._sendbuf += struct.pack("@iii",chan,msg.typecode,len(msg.data)) + msg.data
         self.try_send()
         
     def try_send(self):
@@ -104,6 +108,11 @@
     def unreg_channel(self, chan):
         del self._chans[chan]
 
+    def close_channel(self, chan):
+        self.send(chan, NgcsEOF(-1))
+        if self._chans.has_key(chan):
+            del self._chans[chan]
+
     def try_recv(self):
         while True:
             try:
@@ -263,9 +272,13 @@
     sock.settimeout(30.0)
 
 def ngcs_send(chan, msg):
-    msg = ngcs_pack(msg)
-    sock.sendall(struct.pack("@iii",chan,msg.typecode,len(msg.data)))
-    sock.sendall(msg.data)
+    if isinstance(msg, NgcsEOF):
+        assert msg.val < 0
+        sock.sendall(struct.pack("@iii",chan,NGCS_TYPE_NONE,msg.val))
+    else:
+        msg = ngcs_pack(msg)
+        sock.sendall(struct.pack("@iii",chan,msg.typecode,len(msg.data)))
+        sock.sendall(msg.data)
 
 def ngcs_pack(datum):
     if isinstance(datum, NoneType):


More information about the Initng-svn mailing list