commit 6c3b57abbdb8497a4f4bb9a0e6af053151dafdc0
parent 8b252a7971202554553c2e4a3646723e18994a8f
Author: ThomasV <thomasv@gitorious>
Date: Fri, 16 Mar 2012 23:45:37 +0300
overload import_block
Diffstat:
1 file changed, 20 insertions(+), 15 deletions(-)
diff --git a/server/server.py b/server/server.py
@@ -90,9 +90,20 @@ address_queue = Queue()
class MyStore(Datastore_class):
- def import_tx(self, tx, is_coinbase):
- tx_id = super(MyStore, self).import_tx(tx, is_coinbase)
- self.update_tx_cache(tx_id)
+ def import_block(self, b, chain_ids=frozenset()):
+ block_id = super(MyStore, self).import_block(b, chain_ids)
+ print "import block", block_id
+ for pos in xrange(len(b['transactions'])):
+ tx = b['transactions'][pos]
+ if 'hash' not in tx:
+ tx['hash'] = util.double_sha256(tx['tx'])
+ tx_id = store.tx_find_id_and_value(tx)
+ if tx_id:
+ self.update_tx_cache(tx_id)
+ else:
+ print "error: import_block: no tx_id"
+ return block_id
+
def update_tx_cache(self, txid):
inrows = self.get_tx_inputs(txid, False)
@@ -715,8 +726,8 @@ def tcp_client_thread(ipaddr,conn):
print "json error", repr(c)
continue
try:
- cmd = c['method']
- data = c['params']
+ cmd = c.get('method')
+ data = c.get('params')
except:
print "syntax error", repr(c), ipaddr
continue
@@ -774,7 +785,6 @@ def process_output_queue():
def memorypool_update(store):
- """ when a tx is removed from memory pool, I need to notify subscribers"""
ds = BCDataStream.BCDataStream()
previous_transactions = store.mempool_keys
@@ -798,15 +808,10 @@ def memorypool_update(store):
if store.tx_find_id_and_value(tx):
pass
else:
- store.import_tx(tx, False)
- store.commit()
+ tx_id = store.import_tx(tx, False)
+ store.update_tx_cache(tx_id)
- for tx_hash in previous_transactions:
- if tx_hash not in store.mempool_keys:
- tx = { 'hash':store.hashout(tx_hash) }
- tx_id = store.tx_find_id_and_value(tx)
- if tx_id:
- store.update_tx_cache(tx_id)
+ store.commit()
def clean_session_thread():
@@ -945,8 +950,8 @@ if __name__ == '__main__':
dblock.acquire()
store.catch_up()
memorypool_update(store)
- block_number = store.get_block_number(1)
+ block_number = store.get_block_number(1)
if block_number != old_block_number:
old_block_number = block_number
for session_id in sessions_sub_numblocks: