private QueueMessage ( bool isGmTool, uint seq, int sourceHandle, int destHandle, byte data ) : void | ||
isGmTool | bool | |
seq | uint | |
sourceHandle | int | |
destHandle | int | |
data | byte | |
return | void |
internal void QueueMessage(bool isGmTool, uint seq, int sourceHandle, int destHandle, byte[] data)
{
try {
NodeMessageInfo info;
if (!m_MsgPool.TryDequeue(out info)) {
info = new NodeMessageInfo();
}
info.IsGmTool = isGmTool;
info.Seq = seq;
info.SourceHandle = sourceHandle;
info.DestHandle = destHandle;
info.Data = data;
m_MsgQueue.Enqueue(info);
} catch (Exception ex) {
LogSys.Log(LOG_TYPE.ERROR, "NodeMessageThread.QueueMessage {0} {1} {2} {3} throw exception:{4}\n{5}", isGmTool, seq, sourceHandle, destHandle, ex.Message, ex.StackTrace);
}
}
internal void DispatchMessage(bool isGmTool, uint seq, int sourceHandle, int destHandle, byte[] data) { try { int index = Interlocked.Increment(ref m_TurnIndex) % m_ThreadNum; NodeMessageThread thread = m_NodeMessageThreads[index]; thread.QueueMessage(isGmTool, seq, sourceHandle, destHandle, data); } catch (Exception ex) { LogSys.Log(LOG_TYPE.ERROR, "NodeMessageManager.DispatchMessage throw exception:{0}\n{1}", ex.Message, ex.StackTrace); } }