// 主站调用 Dongmin 20191005 public void OnDataSyncToPartner(object sender) { //夏 2019年8月22日 17:46:53 判断host是否为null if (_host == null) { return; } // David 20191005 if (!PartnerAlive) { return; } PartnerProxy _proxy = (PartnerProxy)_host.GetProxy(); if (_proxy != null) { //_proxy.ExchangeData("testresource","testdata"); //测试 foreach (IResource resource in ResourceManager.GetAllResources()) { if (resource is IRedundancy) { IRedundancy res = (IRedundancy)resource; if (res.NeedDataSync) { string dataToSend = res.BuildSyncData(); //LOG.Debug(string.Format("RedundancyServer:向从站同步数据 resource:{0},data:{1}", resource.ResourceName, dataToSend)); _proxy.ExchangeData(resource.ResourceName, dataToSend); } } } } }
public void ChangeMode(RedundancyMode mode) { if (mode == Mode) { //没有变化 return; } // 有变化 Log.Debug($"主从模式从{Mode}切换成{mode}"); Mode = mode; // 通知所有资源对象 //先启动Machine资源 sunjian 2020-3-2 foreach (var resource in ResourceManager.GetAllResources()) { if (!(resource is IRedundancy res)) { continue; } if (resource.ResourceType != "Machine") { continue; } if (res.CurrentRedundancyMode != mode) { res.RedundancyModeChange(mode); } } //启动非Machine和非Process的资源 sunjian 2020-3-2 foreach (var resource in ResourceManager.GetAllResources()) { if (!(resource is IRedundancy res)) { continue; } if (resource.ResourceType == "Machine" || resource.ResourceType == "Process") { continue; } if (res.CurrentRedundancyMode != mode) { res.RedundancyModeChange(mode); } } //最后启动非Machine和非Process的资源 sunjian 2020-3-2 foreach (var resource in ResourceManager.GetAllResources()) { if (!(resource is IRedundancy res)) { continue; } if (resource.ResourceType != "Process") { continue; } if (res.CurrentRedundancyMode != mode) { res.RedundancyModeChange(mode); } } if (mode == RedundancyMode.Master) { StartSync(); //启动同步 } else { StopSync(); //关闭同步 } }