]> git.llucax.com Git - software/pymin.git/blob - pollserver.py
886ef3a2fa7878185d08deb8df3fbf29074e738e
[software/pymin.git] / pollserver.py
1 # vim: set encoding=utf-8 et sw=4 sts=4 :
2
3 import signal
4 import select
5 from sys import exit
6
7 import dispatcher as dis
8 import udp_server as us
9
10 def quit(signum, frame):
11     print "Shuting down ..."
12     exit(0)
13
14 signal.signal(signal.SIGINT, quit)
15 signal.signal(signal.SIGTERM, quit)
16
17 server = us.UDPServer(9999)
18
19 poll = select.poll()
20 poll.register(server.sock.fileno(), select.POLLIN | select.POLLPRI)
21
22 d = dis.Dispatcher(dict(
23                                         func=dis.test_func,
24                                         inst=dis.TestClass()
25                                    ))
26
27 def handle_recv(sock):
28         (msg, addr) = sock.recvfrom(65535)
29         try:
30                 d.dispatch(msg)
31         except dis.BadRouteError, inst:
32                 sock.sendto('Bad route from : ' + inst.cmd + '\n', addr)
33         except dis.CommandNotFoundError, inst:
34                 sock.sendto('Command not found : ' + inst.cmd + '\n', addr)
35
36 while True:
37     l = poll.poll()
38     handle_recv(server.sock)
39