package org.ripple.power.txns.btc;
import java.io.EOFException;
import java.nio.ByteBuffer;
/**
* The 'block' message consists of a single serialized block.
*/
public class BlockMessage {
/**
* Build a 'block' message
*
* @param peer The destination peer or null for a broadcast message
* @param block Block to be sent to the peer
* @return 'block' message
*/
public static Message buildBlockMessage(Peer peer, Block block) {
ByteBuffer buffer = MessageHeader.buildMessage("block", block.getBytes());
return new Message(buffer, peer, MessageHeader.MessageCommand.BLOCK);
}
/**
* Build a 'block' message
*
* @param peer The destination peer or null for a broadcast message
* @param blockData Serialized block
* @return 'block' message
*/
public static Message buildBlockMessage(Peer peer, byte[] blockData) {
ByteBuffer buffer = MessageHeader.buildMessage("block", blockData);
return new Message(buffer, peer, MessageHeader.MessageCommand.BLOCK);
}
/**
* Process a 'block' message
*
* @param msg Message
* @param inBuffer Input buffer
* @param msgListener Message listener
* @throws EOFException End-of-data while processing stream
* @throws VerificationException Block verification failed
*/
public static void processBlockMessage(Message msg, SerializedBuffer inBuffer, MessageListener msgListener)
throws EOFException, VerificationException {
//
// Get the block
//
Block block = new Block(inBuffer, true);
//
// Notify the message listener
//
msgListener.processBlock(msg, block);
}
}