package network.message; import com.google.common.primitives.Bytes; import com.google.common.primitives.Ints; public class VersionMessage extends Message{ private static final int HEIGHT_LENGTH = 4; private int height; public VersionMessage(int height) { super(VERSION_TYPE); this.height = height; } public int getHeight() { return this.height; } public static Message parse(byte[] data) throws Exception { //CHECK IF DATA MATCHES LENGTH if(data.length != HEIGHT_LENGTH) { throw new Exception("Data does not match length"); } //READ HEIGHT int height = Ints.fromByteArray(data); return new VersionMessage(height); } @Override public byte[] toBytes() { byte[] data = new byte[0]; //WRITE HEIGHT byte[] heightBytes = Ints.toByteArray(this.height); heightBytes = Bytes.ensureCapacity(heightBytes, HEIGHT_LENGTH, 0); data = Bytes.concat(data, heightBytes); //ADD CHECKSUM data = Bytes.concat(super.toBytes(), this.generateChecksum(data), data); return data; } @Override public int getDataLength() { return HEIGHT_LENGTH; } }