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); }
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); } }
virtual public void Start() { lock (this) { if (Interlocked.Read(ref m_Run) == 1) { return; } if (Interlocked.Exchange(ref m_PendingRun, 1) == 1) { return; } try { /// 允许派生类在启动开始阶段插入动作 //_PreStartStage(); ReadConfig(); TempStorageHelper.Instance().Init(); if (m_CommClient == null) { Interlocked.Exchange(ref m_PendingRun, 0); return; } if (!m_CommClient.Start()) { Interlocked.Exchange(ref m_PendingRun, 0); throw new Exception("连接告警服务器失败, 适配器无法启动."); } m_CommClient.onConnectionBroken += new ClientConnectionBrokenHandler(DBAdapterBase_onConnectionBroken); SendLog("正在启动" + Name + "告警适配器(采集周期:" + Interval + "[毫秒])..."); if (!AdapterLogin()) { Interlocked.Exchange(ref m_PendingRun, 0); throw new Exception("向告警服务器注册失败, 适配器无法启动."); } AdapterStateReport(AdapterStatus.Running, null); m_TimerMaintenance.Start(); /// 允许派生类在启动加载告警前插入动作 //_DeclareCustomAlarm(); /// 检查临时存储尚未入库的数据 _checkTempStorage(); ClearAllNMAlarms(); LoadNMAlarms(); ClearAllNMAlarms(); /// 允许派生类在启动最后插入动作 //_PostStartStage(); Interlocked.Exchange(ref m_Run, 1); SendLog("启动成功:" + Name + "告警适配器(采集周期:" + Interval + "[毫秒])..."); } catch (Exception ex) { Interlocked.Exchange(ref m_PendingRun, 0); Interlocked.Exchange(ref m_Run, 0); throw ex; } } }