/// <summary>
        /// 接收队列中的消息
        /// </summary>
        protected void QueueReceive()
        {
            m_PipeServer.WaitForConnection();

            while (m_IsReceived)
            {
                if (!m_PipeServer.IsConnected)
                {
                    Thread.Sleep(50);
                    continue;
                }

                ServiceCommand msg = new ServiceCommand();
                using (StreamReader sr = new StreamReader(m_PipeServer))
                {
                    msg.CommandStringToClass(sr.ReadLine());
                }
                if (msg == null || string.IsNullOrEmpty(msg.Guid))
                {
                    continue;
                }

                m_ReceiveCommandCaches.AddResult(msg.Guid, msg);
                if (MessageReceived != null)
                {
                    // 事件不为为空时
                    if (MessageReceived != null)
                    {
                        MessageReceived(msg);
                    }
                }

                Thread.Sleep(50);
            }
        }
Beispiel #2
0
 /// <summary>
 /// 状态回调
 /// </summary>
 /// <param name="rs">验证结果</param>
 private void Received(ServiceCommand rs)
 {
     if (rs != null)
     {
         m_ReceiveCommandCaches.AddResult(rs.Guid, rs);
         //m_ReceiveQueue.Enqueue(rs);
         m_SendCommandCaches.RemoveResult(rs.Guid);
     }
 }
        /// <summary>
        /// 接收到的数据
        /// </summary>
        /// <param name="message">0</param>
        private void CommunicationControl_MessageReceived(ServiceCommand message)
        {
            RequestEntity requestEntity = message.Entity as RequestEntity;

            if (requestEntity == null)
            {
                return;
            }

            ServiceMap map = Singleton <ConfigManager> .Instance.GetServiceMap(requestEntity.ServiceId);

            // 请求命令格式错误
            if (map == null)
            {
                // 生成请求命令格式错误的响应消息
                ResponseEntity responseEntity = GenerateRequestCommandError(requestEntity);
                //放入字典
                Singleton <ResultCacheManager <ResponseEntity> > .Instance.AddResult(message.Guid, responseEntity);

                return;
            }

            m_Logger.Debug("调用的服务:" + map.ServiceFullName);
            message.ServiceName     = map.ServiceName;
            message.ServiceFullName = map.ServiceFullName;
            message.ServiceDLLName  = map.ServiceDLLName;
            message.Priority        = map.Priority;

            ServiceData data = new ServiceData();

            data.Command = message;

            // 放入请求队列
            m_ReceiveCommandCaches.AddResult(message.Guid, message);
            m_Logger.Debug("请求入队。");
            // 请求入队
            Singleton <QueueManager> .Instance.Enqueue(data);

            Thread.Sleep(100);
        }