create cleaning thread, add commad line socket requests
authorroot <root@www.(none)>
Mon, 14 Nov 2011 22:29:04 +0000 (01:29 +0300)
committerroot <root@www.(none)>
Mon, 14 Nov 2011 22:29:04 +0000 (01:29 +0300)
server.py

index 31df0c2..e009f9b 100644 (file)
--- a/server.py
+++ b/server.py
@@ -323,7 +323,6 @@ def client_thread(ipaddr,conn):
 
             print time.asctime(), "session", ipaddr, session_id, addresses[0], len(addresses)
 
-            clean_sessions()
             sessions[session_id] = {}
             for a in addresses:
                 sessions[session_id][a] = ''
@@ -353,6 +352,9 @@ def client_thread(ipaddr,conn):
             h = store.get_txpoints( addr )
             out = repr(h)
 
+        elif cmd == 'load': 
+            out = repr( len(sessions) )
+
         elif cmd =='tx':        
             # transaction
             out = send_tx(data)
@@ -398,13 +400,15 @@ def memorypool_update(store):
 
 
 
-def clean_sessions():
-    t = time.time()
-    for k,t0 in sessions_last_time.items():
-        if t - t0 > 60:
-            print "lost session",k
-            sessions.pop(k)
-            sessions_last_time.pop(k)
+def clean_session_thread():
+    while 1:
+        time.sleep(30)
+        t = time.time()
+        for k,t0 in sessions_last_time.items():
+            if t - t0 > 60:
+                print "lost session",k
+                sessions.pop(k)
+                sessions_last_time.pop(k)
             
 
 
@@ -413,6 +417,22 @@ import traceback
 
 if __name__ == '__main__':
 
+    if len(sys.argv)>1:
+        request = sys.argv[1]
+        request += "#"
+        s = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
+        s.connect(( HOST, PORT))
+        s.send( request )
+        out = ''
+        while 1:
+            msg = s.recv(1024)
+            if msg: out += msg
+            else: break
+        s.close()
+        print out
+        sys.exit(0)
+
+
     print "starting Electrum server"
     conf = DataStore.CONFIG_DEFAULTS
     args, argv = readconf.parse_argv( [], conf)
@@ -421,6 +441,7 @@ if __name__ == '__main__':
     store = MyStore(args)
 
     thread.start_new_thread(listen_thread, (store,))
+    thread.start_new_thread(clean_session_thread, ())
 
     while True:
         try: