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()); }