public override IDataContainer ProcessMessage(int SCBID, EndPoint RemoteIPEndPoint, NTCPMessage.MessageFlag Flag, ushort CableId, uint Channel, uint Event, SoapMessage objMsg) { if (null == objMsg) { return(DataContainer.CreateNullDataContainer()); } IDataContainer result = null; try { //如果不是集群,那么主节点处理消息 PeekerClusterNode slaveNode = null; var cmdHead = objMsg.Head; if (false == GlobalContext.IsConfigClusteringMode ||//是否开启集群模式 cmdHead.Equals(CommandConstants.CMD_RegisterSlavePort) ||//注册从节点端口 MasterRemoteServer.GetOneSlavePort(out slaveNode) == false ||//是否注册从节点端口)//注册从节点端口 slaveNode.Port == GlobalContext.MasterSocketPort //分配到了主节点工作 ) { result = base.ProcessMessage(SCBID, RemoteIPEndPoint, Flag, CableId, Channel, Event, objMsg); } else { //转发到从节点 result = this.TransferMsgToSlave(slaveNode, objMsg); } if (null != slaveNode) { slaveNode.ConnectedCount -= 1;//设置连接 减量 } } catch (Exception ex) { Logger.Error(ex); } return(result); }
public override IDataContainer ProcessMessage(int SCBID, EndPoint RemoteIPEndPoint, NTCPMessage.MessageFlag Flag, ushort CableId, uint Channel, uint Event, SoapMessage obj) { if (null == obj) { return(DataContainer.CreateNullDataContainer()); } IDataContainer result = null; try { //对消息命令内容进行分支处理 string actionName = obj.Head; switch (actionName) { case CommandConstants.CMD_Platforms: result = this.GetAllSupportPlatforms(); break; case CommandConstants.CMD_FetchPage: //从body 中获取参数 ,并传递到指定的Action todo :指定命令发到指定的平台action解析 var args_webpage = JsonConvert.DeserializeObject <BaseFetchWebPageArgument>(obj.Body); result = this.FetchPlatformSearchWebPage(args_webpage); break; case CommandConstants.CMD_FetchquanExistsList: //从body 中获取参数 var args_yuohuiquan = JsonConvert.DeserializeObject <YouhuiquanFetchWebPageArgument>(obj.Body); result = this.FetchYouhuiquanExistsList(args_yuohuiquan); break; case CommandConstants.CMD_FetchquanDetails: //从body 中获取参数 var args_yuohuiquanDetails = JsonConvert.DeserializeObject <YouhuiquanFetchWebPageArgument>(obj.Body); result = this.FetchYouhuiquanDetails(args_yuohuiquanDetails); break; case CommandConstants.CMD_RegisterSlavePort: var args_registerPort = JsonConvert.DeserializeObject <RegisterPortArgument>(obj.Body); result = this.RegisterSlavePort(args_registerPort.SlaveIdentity); break; //case CommandConstants.CMD_ScanSoapServerSupportCluster: // var args_serverCluter = JsonConvert.DeserializeObject<ScanServerInfoArgument>(obj.Body); // result = this.ScanServerInfo(args_serverCluter); // break; default: result = DataContainer.CreateNullDataContainer(); break; } } catch (Exception ex) { Logger.Error(ex); } return(result); }