Example #1
0
    public void Send(int msgno, SprotoTypeBase obj, eMessageRequestType messageType)
    {
        MemoryStream stream   = new MemoryStream(ConnectionManager.Instance.serialize(obj, messageType));
        Protocol     protocol = new Protocol();

        protocol.msgno  = msgno;
        protocol.stream = stream;
        mSendBuffer.PushBack(protocol);
    }
Example #2
0
        public byte[] serialize(SprotoTypeBase sprotoObject, eMessageRequestType messageType)
        {
            string messageName    = sprotoObject.GetType().Name;
            int    messageNameLen = messageName.Length + 1;

            byte [] encodedMessage   = sprotoObject.encode();
            byte [] messageNameBytes = Encoding.ASCII.GetBytes(messageName.ToCharArray());
            int     totalSize        = 3 + messageNameLen + encodedMessage.Length;

            byte [] sendBuffer = new byte[totalSize];

            sendBuffer[0] = (byte)messageType;
            sendBuffer[1] = (byte)(messageNameLen >> 8);
            sendBuffer[2] = (byte)(messageNameLen);

            System.Buffer.BlockCopy(messageNameBytes, 0, sendBuffer, 3, messageName.Length);
            // Append an extra '\0'
            sendBuffer[3 + messageName.Length] = 0;
            System.Buffer.BlockCopy(encodedMessage, 0, sendBuffer, 4 + messageName.Length, encodedMessage.Length);

            return(sendBuffer);
        }