Medusa.Network.Service.TcpClientMessageService.OnHandleWrite C# (CSharp) Method

OnHandleWrite() protected method

protected OnHandleWrite ( IMessage message ) : byte[]
message IMessage
return byte[]
        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();
        }