private void HandleMessages(int maxCount) { try { for (int i = 0; i < maxCount; ++i) { if (m_MsgQueue.Count > 0) { NodeMessageInfo info = null; m_MsgQueue.TryDequeue(out info); if (null != info) { try { if (info.IsGmTool) { JsonGmMessageDispatcher.HandleNodeMessage(info.Seq, info.SourceHandle, info.DestHandle, info.Data); } else { NodeMessageDispatcher.HandleNodeMessage(info.Seq, info.SourceHandle, info.DestHandle, info.Data); } m_MsgPool.Enqueue(info); } catch (Exception ex) { LogSys.Log(LOG_TYPE.ERROR, "NodeMessageThread JsonMessageDispatcher.HandleDcoreMessage() throw exception:{0}\n{1}", ex.Message, ex.StackTrace); } } } else { break; } } } catch (Exception ex) { LogSys.Log(LOG_TYPE.ERROR, "NodeMessageThread.HandleMessages throw exception:{0}\n{1}", ex.Message, ex.StackTrace); } }
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); } }