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