コード例 #1
0
        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);
        }
コード例 #2
0
        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()));
        }