# When ready, you call
# self.push_response(session,response)
+ def update_from_blocknum(self,block_number):
+ for session in self.sessions:
+ if session.numblocks_sub is not None:
+ response = { 'id':session.numblocks_sub, 'result':block_number }
+ self.push_response(session,response)
+
+ def update_from_address(self,addr):
+ for session in self.sessions:
+ m = session.addresses_sub.get(addr)
+ if m:
+ status = self.get_status( addr )
+ message_id, last_status = m
+ if status != last_status:
+ session.subscribe_to_address(message_id, status)
+ response = { 'id':message_id, 'result':status }
+ self.push_response(session,response)
+
+ def get_status(self,addr):
+ # return status of an address
+ # return store.get_status(addr)
+ pass
+
+
class Session:
def __init__(self, connection, address):
self.lock = threading.Lock()
self.numblocks_sub = None
self.addresses_sub = {}
+ print "new session", address
def stop(self):
self._connection.close()
# Possible race condition here by having session
# close connection?
# I assume Python connections are thread safe interfaces
- connection = session.connection()
try:
+ connection = session.connection()
connection.send(raw_response + "\n")
except:
session.stop()
def run(self):
while not self.shared.stopped():
if not self.update():
- self.session.stop()
break
while self.parse():
def update(self):
data = self.receive()
- if data is None:
+ if not data:
# close_session
self.session.stop()
return False
try:
return self.session.connection().recv(1024)
except socket.error:
- return None
+ return ''
def parse(self):
raw_buffer = self.message.find('\n')
processor.shared = shared
processor.start()
# Create various transports we need
- transports = TcpServer(shared, processor, "ecdsa.org", 50002),
+ transports = TcpServer(shared, processor, "176.31.24.241", 50001),
for server in transports:
server.start()
while not shared.stopped():