public boolean equals(BlockHeader blockHeader) { return (this.getBlockHeight() == blockHeader.getBlockHeight() && this.getTimestamp() == this.getTimestamp()); } }
@Override public void onNewBlock(BlockHeader header) { log.info("Got a {} block: {}", type.getName(), header.getBlockHeight()); boolean shouldSave = false; lock.lock(); try { lastBlockSeenTimeSecs = header.getTimestamp(); lastBlockSeenHeight = header.getBlockHeight(); queueOnNewBlock(); } finally { lock.unlock(); } //if (shouldSave) walletSaveLater(); }
@Override public void onBlockUpdate(BlockHeader header) { log.info("Got a {} block update: {}", type.getName(), header.getBlockHeight()); lock.lock(); try { updateTransactionTimes(header); queueOnNewBlock(); } finally { lock.unlock(); } }
private void updateTransactionTimes(BlockHeader header) { checkState(lock.isHeldByCurrentThread(), "Lock is held by another thread"); Integer height = header.getBlockHeight(); Long timestamp = header.getTimestamp(); boolean mustSave = false; blockTimes.put(height, timestamp); if (missingTimestamps.containsKey(height)) { for (Sha256Hash hash : missingTimestamps.get(height)) { if (rawTransactions.containsKey(hash)) { rawTransactions.get(hash).setTimestamp(timestamp); mustSave = true; } } } missingTimestamps.remove(height); if (mustSave) { walletSaveLater(); } }
@Override public void onNewBlock(BlockHeader header) { log.info("Got a {} block: {}", type.getName(), header.getBlockHeight()); boolean shouldSave = false; lock.lock(); try { lastBlockSeenTimeSecs = header.getTimestamp(); lastBlockSeenHeight = header.getBlockHeight(); updateTransactionTimes(header); for (BitTransaction tx : rawTransactions.values()) { // Save wallet when we have new TXs if (tx.getDepthInBlocks() < TX_DEPTH_SAVE_THRESHOLD) shouldSave = true; maybeUpdateBlockDepth(tx, true); } queueOnNewBlock(); } finally { lock.unlock(); } if (shouldSave) walletSaveLater(); }