package de.tum.in.www1.jReto.connectivity.packet;
import java.nio.ByteBuffer;
import de.tum.in.www1.jReto.packet.Constants;
import de.tum.in.www1.jReto.packet.DataChecker;
import de.tum.in.www1.jReto.packet.DataReader;
import de.tum.in.www1.jReto.packet.DataWriter;
import de.tum.in.www1.jReto.packet.Packet;
import de.tum.in.www1.jReto.packet.PacketType;
/**
* A DataPacket sends the payload data of a transfer.
*/
public class DataPacket implements Packet {
public final static PacketType TYPE = PacketType.DATA_PACKET;
public final static int MINIMUM_LENGTH = Constants.PACKET_TYPE_SIZE;
public final ByteBuffer data;
public DataPacket(ByteBuffer data) {
this.data = data;
}
public static DataPacket deserialize(ByteBuffer data) {
DataReader reader = new DataReader(data);
if (!DataChecker.check(reader, TYPE, MINIMUM_LENGTH)) return null;
return new DataPacket(reader.getRemainingData());
}
public ByteBuffer serialize() {
DataWriter data = new DataWriter(MINIMUM_LENGTH + this.data.remaining());
data.add(TYPE);
data.add(this.data);
return data.getData();
}
}