Esempio n. 1
0
        /// <summary>
        /// 构造函数
        /// </summary>
        public MeshAdapter()
        {
            CommStackLog.Run();

            m_Serial  = new Serial();
            m_Mesh    = new MESH(m_Serial);
            m_Session = new Session(m_Serial);
            m_Manager = new ManagerOperator(m_Serial);

            m_Manager.StabilizeManager();

            m_Session.SessionLost  = sessnLost;
            m_Session.SessionBuilt = sessnConnected;

            // 向mesh层注册通知到达处理方法
            m_Mesh.NotifyArrived += notifyHandler;
            m_Mesh.ReplyArrived   = normalApiResponse;

            // 将用户请求处理线程的优先级设置为最高
            // 在Windows系统中:
            // 线程的基本优先级 = [进程的基本优先级 - 2,进程的基本优先级 + 2],由应用程序控制,
            // Highest,AboveNormal,Normal,BelowNormal,Lowest
            // 线程的动态优先级 = [ 进程的基本优先级 - 2, 31],由NT核心控制
            // 时间配额,是一个线程从进入运行状态到系统检查是否有其他优先级相同的线程需要开始运行之间的时间总和

            // 系统线程userRequestQueueHandler
            m_threadUserRequestWorker          = new Thread(userRequestQueueHandler);
            m_threadUserRequestWorker.Name     = "userRequestQueueHandler";
            m_threadUserRequestWorker.Priority = ThreadPriority.AboveNormal;
            m_threadUserRequestWorker.Start();
            // 系统线程asynCmdResponseHandler
            m_threadMshResponseWork          = new Thread(asynCmdResponseHandler);
            m_threadMshResponseWork.Name     = "asynCmdResponseHandler";
            m_threadMshResponseWork.Priority = ThreadPriority.AboveNormal;
            m_threadMshResponseWork.Start();
            // 系统线程appCmdResponseHandler
            m_threadWaitWsRspWorker          = new Thread(appCmdResponseHandler);
            m_threadWaitWsRspWorker.Name     = "appCmdResponseHandler";
            m_threadWaitWsRspWorker.Priority = ThreadPriority.Normal;
            m_threadWaitWsRspWorker.Start();
            // 系统线程appCmdResponseHandler
            m_threadHeartbeatWorker          = new Thread(heartbeatHandler);
            m_threadHeartbeatWorker.Name     = "heartbeatHandler";
            m_threadHeartbeatWorker.Priority = ThreadPriority.BelowNormal;
            m_threadHeartbeatWorker.Start();
        }