changeset 0:fb5e84a8eb8a

Origination.
author Atul Varma <varmaa@toolness.com>
date Fri, 17 Apr 2009 11:28:28 -0700
parents
children f1159b9ec823
files taw.py
diffstat 1 files changed, 43 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taw.py	Fri Apr 17 11:28:28 2009 -0700
@@ -0,0 +1,43 @@
+import time
+import socket
+import select
+
+if __name__ == '__main__':
+    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+    sock.bind(('127.0.0.1', 8071))
+    sock.setblocking(0)
+    sock.listen(1)
+    print "waiting for connection."
+    reading_list = [sock]
+    countdowns = []
+    last_time = time.time()
+    while True:
+        rlist, wlist, xlist = select.select(reading_list, [], [], 0.25)
+        new_countdowns = []
+        now = time.time()
+        time_elapsed = now - last_time
+        last_time = now
+        for read_socket, timeleft in countdowns:
+            timeleft -= time_elapsed
+            if timeleft <= 0:
+                msg = "go away."
+                read_socket.send('HTTP/1.1 200 OK\r\n' +
+                                 'Content-Length: %d\r\n' % len(msg) +
+                                 'Content-Type: text/plain\r\n\r\n' +
+                                 msg)
+                read_socket.close()
+            else:
+                new_countdowns.append((read_socket, timeleft))
+        countdowns = new_countdowns
+        for read_socket in rlist:
+            if read_socket == sock:
+                conn, addr = sock.accept()
+                print "got conn: %s" % conn
+                reading_list.append(conn)
+            else:
+                data = read_socket.recv(4096)
+                if '\r\n\r\n' in data:
+                    reading_list.remove(read_socket)
+                    countdowns.append((read_socket, 5.0))
+    print "bye."