From 561047a590b4f1546174c8dc8814d0523533aae1 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Tue, 5 Jun 2012 18:34:08 +0400 Subject: [PATCH] move http sessions into dispatcher --- processor.py | 5 +++++ transports/stratum_http.py | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/processor.py b/processor.py index 1ea9649..5ba83ad 100644 --- a/processor.py +++ b/processor.py @@ -89,6 +89,11 @@ class RequestDispatcher(threading.Thread): def pop_request(self): return self.request_queue.get() + def get_session_by_address(self, address): + for x in self.sessions: + if x.address == address: + return x + def get_session_id(self, internal_id): with self.lock: return self.internal_ids.pop(internal_id) diff --git a/transports/stratum_http.py b/transports/stratum_http.py index d628df7..659bae0 100644 --- a/transports/stratum_http.py +++ b/transports/stratum_http.py @@ -107,7 +107,7 @@ class StratumJSONRPCDispatcher(SimpleXMLRPCServer.SimpleXMLRPCDispatcher): responses.append(result.response()) continue - session = self.sessions.get(session_id) + session = self.dispatcher.get_session_by_address(session_id) self.dispatcher.process(session, req_entry) if req_entry['method'] == 'server.stop': @@ -254,16 +254,17 @@ class StratumJSONRPCServer(SocketServer.TCPServer, StratumJSONRPCDispatcher): flags |= fcntl.FD_CLOEXEC fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags) - self.sessions = {} def create_session(self): session_id = random_string(10) - self.sessions[session_id] = HttpSession(session_id) + session = HttpSession(session_id) + self.dispatcher.add_session(session) return session_id def poll_session(self, session_id): - q = self.sessions[session_id].pending_responses + session = self.dispatcher.get_session_by_address(session_id) + q = session.pending_responses responses = [] while not q.empty(): r = q.get() -- 1.7.1