X-Git-Url: https://git.llucax.com/software/pymin.git/blobdiff_plain/026f5f3a6274709b7863c619c979dd32f0ee686f..fbb90886873a6430d44ba2c9e1cfc8ab9d7f14c4:/pymindaemon.py?ds=sidebyside diff --git a/pymindaemon.py b/pymindaemon.py index 1868ae2..1ddef6c 100644 --- a/pymindaemon.py +++ b/pymindaemon.py @@ -11,7 +11,7 @@ command-line. 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 @@ -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,7 +58,12 @@ 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) + 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: @@ -68,10 +73,14 @@ class PyminDaemon(EventLoop): 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__': + @handler def test_handler(*args): print 'test:', args