document public methods of verifier
authorthomasv <thomasv@gitorious>
Fri, 26 Oct 2012 08:20:47 +0000 (10:20 +0200)
committerthomasv <thomasv@gitorious>
Fri, 26 Oct 2012 08:20:47 +0000 (10:20 +0200)
lib/verifier.py
scripts/merchant.py

index fe0e008..5bbcf00 100644 (file)
@@ -25,6 +25,7 @@ from bitcoin import *
 
 
 class WalletVerifier(threading.Thread):
+    """ Simple Verification Protocol """
 
     def __init__(self, interface, config):
         threading.Thread.__init__(self)
@@ -43,9 +44,13 @@ class WalletVerifier(threading.Thread):
         self.set_local_height()
 
     def get_confirmations(self, tx):
-        return (self.local_height - self.verified_tx[tx] + 1) if tx in self.verified_tx else 0
+        """ return the number of confirmations of a monitored transaction. """
+        with self.lock:
+            assert tx in self.transactions
+            return (self.local_height - self.verified_tx[tx] + 1) if tx in self.verified_tx else 0
 
     def add(self, tx):
+        """ add a transaction to the list of monitored transactions. """
         with self.lock:
             if tx not in self.transactions:
                 self.transactions.append(tx)
index 4e8cfd3..dea005c 100644 (file)
@@ -49,7 +49,7 @@ wallet.master_public_key = config.get('electrum','mpk')
 
 omg_addresses = {}
 
-def electrum_input_thread(in_queue, i):
+def electrum_input_thread(in_queue):
     while True:
         addr, amount = in_queue.get(True,1000000000)
         if addr in omg_addresses: 
@@ -57,17 +57,17 @@ def electrum_input_thread(in_queue, i):
         else:
             print "subscribing to ", addr
             omg_addresses[addr] = amount
-            i.send([('blockchain.address.subscribe',[addr])])
+            interface.send([('blockchain.address.subscribe',[addr])])
 
 
-def electrum_output_thread(out_queue, i):
+def electrum_output_thread(out_queue):
     while True:
-        r = i.responses.get(True, 100000000000)
+        r = interface.responses.get(True, 100000000000)
         method = r.get('method') 
 
         if method == 'blockchain.address.subscribe':
             addr = r.get('params')[0]
-            i.send([('blockchain.address.get_history',[addr])])
+            interface.send([('blockchain.address.get_history',[addr])])
 
         elif method == 'blockchain.address.get_history':
             addr = r.get('params')[0]
@@ -156,15 +156,18 @@ if __name__ == '__main__':
     print "using database", db_name
     conn = mdb.connect(db_instance, db_user, db_password, db_name);
 
-    i = Interface({'server':"%s:%d:t"%(electrum_server, 50001)})
-    i.start()
+    interface = Interface({'server':"%s:%d:t"%(electrum_server, 50001)})
+    interface.start()
+
+    verifier = WalletVerifier(interface, config)
+    verifier.start()
     
 
     # this process detects when addresses have paid
     in_queue = Queue.Queue()
     out_queue = Queue.Queue()
-    thread.start_new_thread(electrum_input_thread, (in_queue,i))
-    thread.start_new_thread(electrum_output_thread, (out_queue,i))
+    thread.start_new_thread(electrum_input_thread, (in_queue,))
+    thread.start_new_thread(electrum_output_thread, (out_queue,))
 
     thread.start_new_thread(server_thread, (conn,))