/// <summary> /// get machine list from service /// </summary> /// <returns></returns> public string GetRedundancyStatus() { try { var proxy = (AdminProxy)_adminHost.GetProxy(); if (proxy == null) { return(string.Empty); } switch (proxy.GetRedundancyMode()) { case 0: return("未知"); case 1: return("主机"); case 2: return("从机"); default: return("错误"); } } catch (Exception ex) { Log.Error("获取冗余状态失败:" + ex.Message); return(null); } }
/// <summary> /// get all process name list from services /// </summary> /// <returns></returns> public List <string> GetProcessList() { try { var proxy = (ProcessProxy)_processHost.GetProxy(); return(proxy?.ListProcessNames()); } catch (Exception ex) { Log.Error("获取GetProcessList失败:" + ex.Message); return(null); } }
/// <summary> /// get resource list from service /// </summary> /// <returns></returns> public List <string> GetResourceList() { try { var proxy = (ResourceProxy)_resourceHost.GetProxy(); return(proxy?.GetAllResources()); } catch (Exception ex) { Log.Error("获取资源列表失败:" + ex.Message); return(null); } }
/// <summary> /// get machine list from service /// </summary> /// <returns></returns> public List <string> GetMachineList() { try { var proxy = (MachineProxy)_machineHost.GetProxy(); return(proxy?.ListMachineNames()); } catch (Exception ex) { Log.Error("获取MachineList失败:" + ex.Message); return(null); } }
//private Thread _slaveCheck = null; //private bool IsPartnerModeChange() //{ // if (_lastPartnerMode != PartnerMode) // { // LOG.Debug(string.Format("Redundancy:冗余伙伴的模式从{0}变化成{1}", _lastPartnerMode.ToString(),PartnerMode.ToString())); // _lastPartnerMode = PartnerMode; // return true; // } // else // return false; //} private void RedundancyStatusCheck(object sender) { // 获得对方的模式 if (PartnerAlive) { //LOG.Debug("Redundancy:检测对方正在运行"); PartnerProxy _proxy = (PartnerProxy)_host.GetProxy(); if (_proxy != null) { var result = _proxy.GetPartnerMode(); PartnerMode = (RedundancyMode)(Enum.ToObject(typeof(RedundancyMode), result)); _partnerRunTime = _proxy.GetPartnerRunTime(); //LOG.Debug(string.Format("RedundancyClient:冗余伙伴的模式为:{0}", PartnerMode.ToString())); } //模式比较 if (Mode == RedundancyMode.Master) { if (PartnerMode == RedundancyMode.Master) { if (!WeAreFirstRun()) {//对方先运行 Log.Debug("Redundancy主从切换原因:双方Master,对方先启动"); ChangeMode(RedundancyMode.Slave); } } } else if (Mode == RedundancyMode.Slave) { if (PartnerMode == RedundancyMode.Slave) { if (WeAreFirstRun()) {//我方先运行 Log.Debug("Redundancy主从切换原因:对方Slave,我方Slave,我方先启动"); ChangeMode(RedundancyMode.Master); } } } else if (Mode == RedundancyMode.Unknown) { if (PartnerMode == RedundancyMode.Master) { Log.Debug("Redundancy主从切换原因:对方Master,我方是Unknown"); ChangeMode(RedundancyMode.Slave); } else if (PartnerMode == RedundancyMode.Slave) { Log.Debug("Redundancy主从切换原因对方Slave,我方是Unknown"); ChangeMode(RedundancyMode.Master); } else if (PartnerMode == RedundancyMode.Unknown) { if (WeAreFirstRun()) {//我方先运行 Log.Debug("Redundancy主从切换原因对方Unknown,我方是Unknown,我方先启动"); ChangeMode(RedundancyMode.Master); } } } PartnerUnliveCounts = 0; } else { // 连接断开 PartnerMode = RedundancyMode.Unknown; if (Mode != RedundancyMode.Master) { if (PartnerUnliveCounts >= ConfirmPartnerUnliveLimitation) { PartnerUnliveCounts = 0; Log.Debug("Redundancy主从切换原因:对方不在线,已经过了验证期"); ChangeMode(RedundancyMode.Master); } else { Log.Debug(string.Format("Redundancy:对方不在线,验证{0}次", PartnerUnliveCounts)); PartnerUnliveCounts++; } } } }