コード例 #1
0
        protected byte[] OnHandleWrite(IMessage message)
        {
            mHeartbeatWatch.Start();

            if (message.SessionId != 0)
            {
                mMessages.Add(message.SessionId, message);
            }

            message.Version = mMessageVersion;
            message.OnSend(this);

            ArraySegment <byte>?data;

            if (message.IsRequest)
            {
                data = message.SerializeRequest();
            }
            else
            {
                data = message.SerializeResponse();
            }

            int totalSize = (data?.Count ?? 0) + 4 * 6;

            mWriteBuffer.Write(totalSize);
            mWriteBuffer.Write(message.FromService);
            mWriteBuffer.Write(message.ToService);
            mWriteBuffer.Write(message.Version);
            mWriteBuffer.Write(message.Id);
            mWriteBuffer.Write(message.SessionId);
            mWriteBuffer.Write(message.ConnectionId);
            if (data != null)
            {
                mWriteBuffer.Write(data.Value.Array, data.Value.Offset, data.Value.Count);
            }

            return(mWriteBuffer.ReadAll());
        }