package lsr.paxos; import java.nio.ByteBuffer; import java.util.ArrayDeque; import java.util.Deque; import lsr.common.ClientRequest; import lsr.paxos.replica.ClientBatchID; public class UnBatcher { // Prevent construction private UnBatcher() { }; public static Deque<ClientBatchID> unpackCBID(byte[] source) { ByteBuffer bb = ByteBuffer.wrap(source); int count = bb.getInt(); Deque<ClientBatchID> requests = new ArrayDeque<ClientBatchID>(count); for (int i = 0; i < count; ++i) { requests.add(new ClientBatchID(bb)); } assert bb.remaining() == 0 : "Packing/unpacking error"; return requests; } public static ClientRequest[] unpackCR(byte[] source) { ByteBuffer bb = ByteBuffer.wrap(source); int count = bb.getInt(); ClientRequest[] requests = new ClientRequest[count]; for (int i = 0; i < count; ++i) { requests[i] = ClientRequest.create(bb); } assert bb.remaining() == 0 : "Packing/unpacking error"; return requests; } }