]> git.llucax.com Git - software/pymin.git/blobdiff - pymindaemon.py
Add a missing handler decorator to PyminDaemon test.
[software/pymin.git] / pymindaemon.py
index 1868ae245305d74b5554478e0baa0833a1d7cd3e..1ddef6c5d2bff19927580e11ceeb368368346a3d 100644 (file)
@@ -11,7 +11,7 @@ command-line.
 import signal
 import socket
 from dispatcher import Dispatcher
 import signal
 import socket
 from dispatcher import Dispatcher
-from eventloop import EventLoop
+from eventloop import EventLoop, LoopInterruptedError
 
 class PyminDaemon(EventLoop):
     r"""PyminDaemon(bind_addr, routes) -> PyminDaemon instance
 
 class PyminDaemon(EventLoop):
     r"""PyminDaemon(bind_addr, routes) -> PyminDaemon instance
@@ -47,7 +47,7 @@ class PyminDaemon(EventLoop):
         # Signal handling
         def quit(signum, frame):
             print "Shuting down ..."
         # 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
         def reload_config(signum, frame):
             print "Reloading configuration..."
             # TODO iterate handlers list propagating reload action
@@ -58,7 +58,12 @@ class PyminDaemon(EventLoop):
     def handle(self):
         r"handle() -> None :: Handle incoming events using the dispatcher."
         (msg, addr) = self.file.recvfrom(65535)
     def handle(self):
         r"handle() -> None :: Handle incoming events using the dispatcher."
         (msg, addr) = self.file.recvfrom(65535)
-        self.dispatcher.dispatch(msg)
+        result = self.dispatcher.dispatch(msg)
+        if result is None:
+            msg = 'OK 0'
+        else:
+            msg = 'OK %d\n%s' % (len(str(result)), result)
+        self.file.sendto(msg, addr)
         #try:
         #    d.dispatch(msg)
         #except dis.BadRouteError, inst:
         #try:
         #    d.dispatch(msg)
         #except dis.BadRouteError, inst:
@@ -68,10 +73,14 @@ class PyminDaemon(EventLoop):
 
     def run(self):
         r"run() -> None :: Run the event loop (shortcut to loop())"
 
     def run(self):
         r"run() -> None :: Run the event loop (shortcut to loop())"
-        return self.loop()
+        try:
+            return self.loop()
+        except LoopInterruptedError, e:
+            pass
 
 if __name__ == '__main__':
 
 
 if __name__ == '__main__':
 
+    @handler
     def test_handler(*args):
         print 'test:', args
 
     def test_handler(*args):
         print 'test:', args