]> git.llucax.com Git - software/pymin.git/blobdiff - pymindaemon.py
Make Host iterable so it can be used as a sequence when serializing.
[software/pymin.git] / pymindaemon.py
index b7c64e4104bbe8a2376ae315910a8e7df5c4f055..b8369b9d67622467cc7e8b36187459a664d899ac 100644 (file)
@@ -47,7 +47,7 @@ class PyminDaemon(EventLoop):
         # Signal handling
         def quit(signum, frame):
             print "Shuting down ..."
-            loop.stop() # tell main event loop to stop
+            self.stop() # tell main event loop to stop
         def reload_config(signum, frame):
             print "Reloading configuration..."
             # TODO iterate handlers list propagating reload action
@@ -58,13 +58,17 @@ class PyminDaemon(EventLoop):
     def handle(self):
         r"handle() -> None :: Handle incoming events using the dispatcher."
         (msg, addr) = self.file.recvfrom(65535)
-        self.dispatcher.dispatch(msg)
-        #try:
-        #    d.dispatch(msg)
-        #except dis.BadRouteError, inst:
-        #    sock.sendto('Bad route from : ' + inst.cmd + '\n', addr)
-        #except dis.CommandNotFoundError, inst:
-        #    sock.sendto('Command not found : ' + inst.cmd + '\n', addr)
+        try:
+            result = self.dispatcher.dispatch(msg)
+            response = 'OK '
+        except Exception, e:
+            result = str(e)
+            response = 'ERROR '
+        if result is None:
+            response += '0'
+        else:
+            response += '%d\n%s' % (len(str(result)), result)
+        self.file.sendto(response, addr)
 
     def run(self):
         r"run() -> None :: Run the event loop (shortcut to loop())"
@@ -75,6 +79,7 @@ class PyminDaemon(EventLoop):
 
 if __name__ == '__main__':
 
+    @handler
     def test_handler(*args):
         print 'test:', args