X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=blobdiff_plain;f=abe_backend.py;h=ae43dfd0f266352991aa23677903cbd547e20d8d;hp=8f6edf339a19f9b0899a574bfe5401f507c2a853;hb=aa3bd16ea7859ac656d58e3f0b8cd06b3e88af05;hpb=83f0728dc8c5944f9eaa24f8e671de1ec85bda66 diff --git a/abe_backend.py b/abe_backend.py index 8f6edf3..ae43dfd 100644 --- a/abe_backend.py +++ b/abe_backend.py @@ -7,6 +7,7 @@ import psycopg2, binascii import thread, traceback, sys, urllib, operator from json import dumps, loads from Queue import Queue +import time class AbeStore(Datastore_class): @@ -30,6 +31,8 @@ class AbeStore(Datastore_class): self.address_queue = Queue() self.dblock = thread.allocate_lock() + self.block_number = -1 + self.watched_addresses = [] @@ -365,3 +368,28 @@ class AbeStore(Datastore_class): store.dblock.release() return block_number + + def watch_address(self, addr): + if addr not in self.watched_addresses: + self.watched_addresses.append(addr) + + def run(self, processor): + + old_block_number = None + while not processor.shared.stopped(): + self.block_number = self.main_iteration() + + if self.block_number != old_block_number: + old_block_number = self.block_number + processor.push_response({ 'method':'numblocks.subscribe', 'result':self.block_number }) + + while True: + try: + addr = self.address_queue.get(False) + except: + break + if addr in self.watched_addresses: + status = self.get_status( addr ) + processor.push_response({ 'method':'address.subscribe', 'params':[addr], 'result':status }) + + time.sleep(10)