diff --git a/query.py b/query.py index f445d06..1cae0ae 100644 --- a/query.py +++ b/query.py @@ -3,31 +3,40 @@ # See the file "LICENSE" for information about the copyright # and warranty status of this software. -import asyncio import os import sys from server.env import Env -from server.server import Server +from server.db import DB def main(): env = Env() os.chdir(env.db_dir) - loop = asyncio.get_event_loop() - server = Server(env, loop) - db = server.db + db = DB(env) coin = db.coin - for addr in sys.argv[1:]: + argc = 1 + try: + limit = int(sys.argv[argc]) + argc += 1 + except: + limit = 10 + for addr in sys.argv[argc:]: print('Address: ', addr) hash160 = coin.address_to_hash160(addr) - for n, (tx_hash, height) in enumerate(db.get_history(hash160)): + n = None + for n, (tx_hash, height) in enumerate(db.get_history(hash160, limit)): print('History #{:d}: hash: {} height: {:d}' .format(n + 1, bytes(reversed(tx_hash)).hex(), height)) - for n, utxo in enumerate(db.get_utxos(hash160)): + if n is None: + print('No history') + n = None + for n, utxo in enumerate(db.get_utxos(hash160, limit)): print('UTXOs #{:d}: hash: {} pos: {:d} height: {:d} value: {:d}' .format(n, bytes(reversed(utxo.tx_hash)).hex(), utxo.tx_pos, utxo.height, utxo.value)) + if n is None: + print('No UTXOs') if __name__ == '__main__': main() diff --git a/server/server.py b/server/server.py index e6a7bbc..ca6b786 100644 --- a/server/server.py +++ b/server/server.py @@ -15,11 +15,11 @@ from server.db import DB class Server(object): - def __init__(self, env, loop): + def __init__(self, env): self.env = env self.db = DB(env) self.rpc = RPC(env) - self.block_cache = BlockCache(env, self.db, self.rpc, loop) + self.block_cache = BlockCache(env, self.db, self.rpc) def async_tasks(self): return [ @@ -32,7 +32,7 @@ class BlockCache(object): '''Requests blocks ahead of time from the daemon. Serves them to the blockchain processor.''' - def __init__(self, env, db, rpc, loop): + def __init__(self, env, db, rpc): self.logger = logging.getLogger('BlockCache') self.logger.setLevel(logging.INFO) @@ -47,6 +47,8 @@ class BlockCache(object): self.blocks = [] self.recent_sizes = [] self.ave_size = 0 + + loop = asyncio.get_event_loop() for signame in ('SIGINT', 'SIGTERM'): loop.add_signal_handler(getattr(signal, signame), partial(self.on_signal, signame))