class NodeBlockProcessor implements BlockProcessor {

    @Override
    public void processBodyRequest(@Nonnull final MessageChannel sender, long requestId, @Nonnull final byte[] hash) {
        logger.trace("Processing body request {} {} from {}", requestId, Hex.toHexString(hash).substring(0, 10), sender.getPeerNodeID());
        final Block block = blockSyncService.getBlockFromStoreOrBlockchain(hash);

        if (block == null) {
            // Don't waste time sending an empty response.
            return;
        }

        Message responseMessage = new BodyResponseMessage(requestId, block.getTransactionsList(), block.getUncleList());
        sender.sendMessage(responseMessage);
    }

    public  NodeBlockProcessor(
            @Nonnull final BlockStore store,
            @Nonnull final Blockchain blockchain,
            @Nonnull final BlockNodeInformation nodeInformation,
            @Nonnull final BlockSyncService blockSyncService,
            @Nonnull final SyncConfiguration syncConfiguration);

}