public NetworkBuffer serialize(RepositoryState state) { NetworkBuffer buffer = new NetworkBuffer(HEADER_SIZE + (state.Size() * BELIEF_SIZE)); buffer.writeInt32(COMMIT_OFFSET, state.RevisionNumber()); buffer.writeInt32(NUM_BELIEFS_OFFSET, state.Size()); int offset = HEADER_SIZE; foreach (RepositoryState.RepositoryObject belief in state.GetObjects()) { buffer.writeByte(offset + TYPE_OFFSET, (byte)belief.key.getBeliefType()); buffer.writeInt32(offset + CUSTOM_TYPE_OFFSET, belief.key.getCustomType()); buffer.writeInt32(offset + BELIEF_ID_OFFSET, belief.key.getBeliefID()); byte[] hashBytes = belief.hash.GetBytes(); buffer.writeBytes(hashBytes, 0, offset + DIGEST_OFFSET, hashBytes.Length); } return(buffer); }
private Message formatMessage(BSPMessage data) { if (data == null) { Console.Error.WriteLine("Could not format null data"); return(null); } int messageLength = data.getData().size(); NetworkBuffer messageData = new NetworkBuffer(HEADER_LENGTH + messageLength); messageData.writeInt32(HEADER_TYPE_OFFSET, (int)data.getType()); messageData.writeInt32(HEADER_SOURCE_OFFSET, data.getSourceID()); if (data.getData().size() > 0) { messageData.writeBytes(data.getData().getBuffer(), 0, HEADER_LENGTH, data.getData().size()); } return(new Message(data.getAddress(), messageData.getBuffer())); }