if (onBlockBuffer.size() < onBlockBuffer.maxSize()) { replayComplete = true; } else {
@Override public synchronized void onBlock(BlockSummary blockSummary) { if (replayComplete) { if (onBlockBuffer.isEmpty()) { listener.onBlock(blockSummary); } else { logger.info("Replaying cached " + onBlockBuffer.size() + " blocks..."); boolean lastBlockFound = lastReplayedBlock == null || onBlockBuffer.size() < onBlockBuffer.maxSize(); for (BlockSummary block : onBlockBuffer) { if (!lastBlockFound) { lastBlockFound = FastByteComparisons.equal(block.getBlock().getHash(), lastReplayedBlock.getHash()); } else { listener.onBlock(block); } } onBlockBuffer.clear(); listener.onBlock(blockSummary); logger.info("Cache replay complete. Switching to online mode."); } } else { onBlockBuffer.add(blockSummary); } }