Add UDP support and default to it.
authorEric S. Raymond <esr@thyrsus.com>
Mon, 27 Aug 2012 10:46:30 +0000 (06:46 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Mon, 27 Aug 2012 10:46:30 +0000 (06:46 -0400)
irker.py

index 7986e19994e43c957a71f270ab6f417117e5914e..376a9566cd512d9b6804e30c9353c265b418f512 100755 (executable)
--- a/irker.py
+++ b/irker.py
@@ -159,17 +159,24 @@ class Irker:
         for session in self.sessions.values():
             session.await()
 
-class MyTCPHandler(SocketServer.StreamRequestHandler):
+class IrkerTCPHandler(SocketServer.StreamRequestHandler):
     def handle(self):
         while True:
             irker.handle(self.rfile.readline().strip())
 
+class IrkerUDPHandler(SocketServer.BaseRequestHandler):
+    def handle(self):
+        data = self.request[0].strip()
+        #socket = self.request[1]
+        irker.handle(data)
+
 if __name__ == '__main__':
     host = HOST
     port = PORT
     namesuffix = None
     debuglevel = 0
-    (options, arguments) = getopt.getopt(sys.argv[1:], "d:p:n:")
+    tcp = False
+    (options, arguments) = getopt.getopt(sys.argv[1:], "d:p:n:t")
     for (opt, val) in options:
         if opt == '-d':
             debuglevel = int(val)
@@ -177,8 +184,13 @@ if __name__ == '__main__':
             port = int(val)
         elif opt == '-n':
             namesuffix = val
+        elif opt == '-t':
+            tcp = True
     irker = Irker(debuglevel=debuglevel, namesuffix=namesuffix)
-    server = SocketServer.TCPServer((host, port), MyTCPHandler)
+    if tcp:
+        server = SocketServer.TCPServer((host, port), IrkerTCPHandler)
+    else:
+        server = SocketServer.UDPServer((host, port), IrkerUDPHandler)
     try:
         server.serve_forever()
     except KeyboardInterrupt: