12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using CommonNetwork_ICE.Util;
- using System.Collections;
- using Slice;
- using CommonServer_ICE.Session;
- using CommonLang.Protocol;
- namespace CommonServer_ICE.Msg
- {
- /// <summary>
- /// 服务器发送消息管理器,用来启动应答检测线程
- /// </summary>
- internal class SeverSendMsgManager
- {
- // 应答检测线程
- private static SeverSendMsgQueue[] queueList;
- // 线程运行控制信号
- private static bool runFlag = false;
- /// <summary>
- /// 启动应答检测线程
- /// </summary>
- public static void StartSendMsgQueue()
- {
- queueList = new SeverSendMsgQueue[Env.SEND_MSG_ACK_CHECK_THREAD_CNT];
- for (int i = 0; i < Env.SEND_MSG_ACK_CHECK_THREAD_CNT; i++)
- {
- Hashtable map = new Hashtable();
- queueList[i] = new SeverSendMsgQueue(map);
- queueList[i].Start();
- }
- runFlag = true;
- }
- /// <summary>
- /// 停止应答检测线程
- /// </summary>
- public static void EndSendMsgQueue()
- {
- runFlag = false;
- for (int i = 0; i < Env.SEND_MSG_ACK_CHECK_THREAD_CNT; i++)
- {
- queueList[i].End();
- }
- }
- /// <summary>
- /// 将关键消息包加入检测线程
- /// </summary>
- /// <param name="session">会话</param>
- /// <param name="imessage">业务源消息包</param>
- /// <param name="transMessage">关键消息包</param>
- public static void AddPacket(IceServerIoSession session, IMessage imessage, TransMessage transMessage)
- {
- if (!runFlag)
- {
- return;
- }
- MsgSessionPacket packet = new MsgSessionPacket();
- packet.Session = session;
- packet.ID = packet.Session.ID.ToString();
- packet.Message = transMessage;
- packet.SrcMessage = imessage;
- int id = int.Parse(packet.Session.ID);
- int index = id % Env.SEND_MSG_ACK_CHECK_THREAD_CNT;
- queueList[index].AddPacket(packet);
- }
- }
- }
|