public bool Close() { if (null == client) { return(false); } return(client.Close()); }
virtual public void Stop() { lock (this) { if (Interlocked.Read(ref m_Run) == 0) { return; } if (Interlocked.Exchange(ref m_PendingRun, 0) == 0) { return; } SendLog("正在关闭" + Name + "告警适配器..."); _PreStopStage(); AdapterStateReport(AdapterStatus.Stop, null); if (!AdapterLogout()) { SendLog("从告警服务器注销失败, 服务器中信息可能不正确."); } try { if (m_CommClient != null) { m_CommClient.onConnectionBroken -= new ClientConnectionBrokenHandler(DBAdapterBase_onConnectionBroken); m_CommClient.Close(); } } catch { } m_TimerMaintenance.Stop(); _PostStopStage(); try { m_StopPrivilege.AcquireWriterLock(-1); } finally { m_StopPrivilege.ReleaseLock(); } Interlocked.Exchange(ref m_Run, 0); SendLog(Name + "告警适配器已结束."); } }
public void DisposeClient(ICommClient client) { try { lock (m_CommClients) { if (m_CommClients.Contains(client)) { client.Close(); m_CommClients.Remove(client); } } } catch (Exception ex) { LogReceived(ex.ToString()); } }
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); } }