def get_synced_accounts(stub, accounts): block_count = stub.GetLedgerInfo(Empty()).block_count synced = {a: False for a in accounts} while not any(synced.values()): print(".", end="", flush=True) for a in synced: request = mobilecoind_api_pb2.GetMonitorStatusRequest(monitor_id=a) monitor_block = stub.GetMonitorStatus(request).status.next_block if monitor_block == block_count: synced[a] = True return {a for a in synced if synced[a] == True}
def wait_for_accounts_sync(stub, accounts, wait_secs): print("accounts = ", accounts[0]) block_count = stub.GetLedgerInfo(Empty()).block_count synced_ids = {a: False for a in accounts} while not all(synced_ids.values()): print(".", end="", flush=True) for a in synced_ids: request = mobilecoind_api_pb2.GetMonitorStatusRequest(monitor_id=a) monitor_block = stub.GetMonitorStatus(request).status.next_block if monitor_block == block_count: synced_ids[a] = True time.sleep(wait_secs) print("All accounts synced")
def wait_for_accounts_sync(stub, accounts, wait_secs): logging.debug("accounts = %s", accounts[0]) block_count = stub.GetLedgerInfo(Empty()).block_count synced_ids = {a: False for a in accounts} while not all(synced_ids.values()): logging.info("Waiting for accounts to sync") for a in synced_ids: request = mobilecoind_api_pb2.GetMonitorStatusRequest(monitor_id=a) monitor_block = stub.GetMonitorStatus(request).status.next_block if monitor_block == block_count: synced_ids[a] = True time.sleep(wait_secs) logging.info("All accounts synced")
def get_monitor_status(self, monitor_id): """ Returns a status report for a monitor process. """ request = api.GetMonitorStatusRequest(monitor_id=monitor_id) response = self.stub.GetMonitorStatus(request) return response.status
if __name__ == '__main__': args = parse_args() logging.debug(args) stub = connect(args.mobilecoind_host, args.mobilecoind_port) block_count = stub.GetLedgerInfo(Empty()).block_count total = 0 for keyfile in sorted( filter(lambda x: x.endswith(".json"), os.listdir(args.key_dir))): logging.info("%s", keyfile) account_data = load_key_and_register( os.path.join(args.key_dir, keyfile), stub) # Get starting balance request = mobilecoind_api_pb2.GetMonitorStatusRequest( monitor_id=account_data.monitor_id) monitor_block = stub.GetMonitorStatus(request).status.next_block if block_count != monitor_block: logging.info("Account not synced") else: resp = stub.GetBalance( mobilecoind_api_pb2.GetBalanceRequest( monitor_id=account_data.monitor_id)) balance = resp.balance total += balance logging.info("Balance: %s", resp.balance) # Remove balances of 0 FIXME: MC-367 also from mobilecoind wallet if int(balance) == 0 and args.prune: os.remove(os.path.join(args.key_dir, keyfile)) logging.info("Total balance of key collection: %s PicoMob", total)