void _VerifyTerminalsStatus(ICommunicationMessage message) { C5.HashDictionary <long, AdapterInfo> ads = new C5.HashDictionary <long, AdapterInfo>(); AlarmManager.instance().GetAdaptersInfo(ads); foreach (C5.KeyValuePair <long, AdapterInfo> info in ads) { try { System.Net.IPEndPoint end = new System.Net.IPEndPoint(System.Net.IPAddress.Parse(info.Value.Address), info.Value.ControllerPort); if (end.Port == 0) { continue; } else { ICommClient comm = CommManager.instance().CreateCommClient <CommandMsgV2, TKMessageV2Extractor, TKMessageV2Encoder>("控制器", end.Address.ToString(), end.Port, 30, false, false); if (!comm.Start()) { // remove adapter AlarmManager.instance().RemoveAdapterInfo(info.Key); } else { comm.Close(); } } } catch (Exception ex) { DefLib.Util.Logger.Instance().SendLog(ex.ToString()); } } CommandMsgV2 msg = new CommandMsgV2(); msg.TK_CommandType = Constants.TK_CommandType.MON_GETTERMINALSINFO; msg.SeqID = message.SeqID; msg.SetValue("ClientID", message.GetValue("ClientID")); CommandProcessor.instance().DispatchCommand(msg); }
protected void Init() { try { //获取应用程序运行路径 string path = AppDomain.CurrentDomain.BaseDirectory; DataSet DBds = new DataSet(); //读入数据库连接参数 DBds = MD5Encrypt.DES.instance().DecryptXML2DS(path + "conf.xml", 1); m_SysPara.Clear(); foreach (DataRow r in DBds.Tables["Parameters"].Rows) { m_SysPara.Add(r["name"].ToString(), r["value"].ToString()); } m_CommClient = CommManager.instance().CreateCommClient <CommandMsgV2, TKMessageV2Extractor, TKMessageV2Encoder>( m_SysPara["Adapter Name"].ToString(), m_SysPara["Server IP"].ToString(), Convert.ToInt32(m_SysPara["Server Port"]), Convert.ToInt32(m_SysPara["Comm Timeout"]), true, false); m_CommClient.onLog += new TK_AlarmManagement.LogHandler(LogReceiver); #region Declear Adapter m_Adapter = new T(); m_Adapter.ControllerPort = Convert.ToInt32(m_SysPara["Controller Port"]); m_Adapter.Name = m_SysPara["Adapter Name"].ToString(); m_Adapter.Interval = Convert.ToInt32(m_SysPara["Retrieve Interval"]); m_Adapter.SvrID = Convert.ToInt32(m_SysPara["SvrID"]); m_Adapter.EncodingStr = m_SysPara["Encoding"]; m_Adapter.Init(m_CommClient); #endregion DefLib.Util.Logger.Instance().SubscibeLog("", new DefLib.Util.Logger.LogFunction(LogReceiver)); //m_Adapter.LogReceived += new TK_AlarmManagement.LogHandler(LogReceiver); m_Adapter.StateChanged += new StateChangeHandler(m_Adapter_StateChanged); m_Name = m_Adapter.Name; // 配置监控终端服务器 List <Constants.TK_CommandType> acceptedCommands = new List <Constants.TK_CommandType>(); acceptedCommands.Add(Constants.TK_CommandType.RESPONSE); List <Constants.TK_CommandType> superCommands = new List <Constants.TK_CommandType>(); superCommands.Add(Constants.TK_CommandType.RESPONSE); m_ControllerServer = CommManager.instance().CreateCommServer <DefaultInterpreter, CommandMsgV2, TKMessageV2Extractor, TKMessageV2Encoder>("监控服务器", acceptedCommands, superCommands, Convert.ToInt32(m_SysPara["Controller Port"]), Convert.ToInt32(m_SysPara["MaxController"]), 30, true, false); m_ControllerServer.onLog += new LogHandler(LogReceiver); acceptedCommands.Clear(); superCommands.Clear(); Dictionary <Constants.TK_CommandType, byte> empty = new Dictionary <Constants.TK_CommandType, byte>(); CommandProcessor.instance().registerReportHandler(Constants.TK_CommandType.ADAPTER_START, this, empty); CommandProcessor.instance().registerReportHandler(Constants.TK_CommandType.ADAPTER_STOP, this, empty); CommandProcessor.instance().registerReportHandler(Constants.TK_CommandType.ADAPTER_GETRUNTIMEINFO, this, empty); CommandProcessor.instance().registerReportHandler(Constants.TK_CommandType.ADAPTER_GETOMCLIST, this, empty); CommandProcessor.instance().registerReportHandler(Constants.TK_CommandType.ADAPTER_GETCURLOG, this, empty); CommandProcessor.instance().registerReportHandler(Constants.TK_CommandType.ADAPTER_GETLOGFILES, this, empty); CommandProcessor.instance().registerReportHandler(Constants.TK_CommandType.ADAPTER_SHUTDOWN, this, empty); } catch (Exception ex) { Logger.Instance().SendLog("AdapterController", ex.ToString()); throw ex; } }
CommandMsgV2 _StartAdapter(ICommunicationMessage message) { try { CommandMsgV2 resp = new CommandMsgV2(); resp.TK_CommandType = Constants.TK_CommandType.RESPONSE; resp.SeqID = CommandProcessor.AllocateID(); resp.SetValue("ClientID", message.GetValue("ClientID")); resp.SetValue(Constants.MSG_PARANAME_RESPONSE_TO, message.SeqID); long adapterid = Convert.ToInt64(message.GetValue(Constants.MSG_PARANAME_ADAPTER_ID)); C5.HashDictionary <long, AdapterInfo> ads = new C5.HashDictionary <long, AdapterInfo>(); AlarmManager.instance().GetAdaptersInfo(ads); if (!ads.Contains(adapterid)) { resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK"); resp.SetValue(Constants.MSG_PARANAME_REASON, "采集器不存在."); return(resp); } try { CommandMsgV2 cmd = new CommandMsgV2(); cmd.SeqID = CommandProcessor.AllocateID(); cmd.TK_CommandType = Constants.TK_CommandType.ADAPTER_START; cmd.SetValue("ClientID", adapterid); cmd.SetValue(Constants.MSG_PARANAME_ADAPTER_NAME, ads[adapterid].Name); System.Net.IPEndPoint end = new System.Net.IPEndPoint(System.Net.IPAddress.Parse(ads[adapterid].Address), ads[adapterid].ControllerPort); if (end.Port == 0) { resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK"); resp.SetValue(Constants.MSG_PARANAME_REASON, "不可远程控制的采集器"); } else { ICommClient comm = CommManager.instance().CreateCommClient <CommandMsgV2, TKMessageV2Extractor, TKMessageV2Encoder>("控制器", end.Address.ToString(), end.Port, 30, false, false); comm.Start(); ICommunicationMessage r2 = comm.SendCommand(cmd); resp.SetValue(Constants.MSG_PARANAME_RESULT, r2.GetValue(Constants.MSG_PARANAME_RESULT)); comm.Close(); } } catch (Exception ex) { resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK"); resp.SetValue(Constants.MSG_PARANAME_REASON, ex.Message); } return(resp); } catch (Exception ex) { Logger.Instance().SendLog(ex.ToString()); return(null); } }