// Token: 0x06000ED9 RID: 3801 RVA: 0x0003F5F4 File Offset: 0x0003D7F4
        public override TopologyInfo GetLocalServerTopology(bool isForceRefresh = false)
        {
            TopologyInfo           topologyInfo = null;
            IActiveManagerSettings settings     = DxStoreSetting.Instance.GetSettings();
            bool flag = settings.DxStoreRunMode != DxStoreMode.Disabled;

            if (isForceRefresh)
            {
                Dependencies.ADConfig.Refresh("Distributed store requesting for AD config refresh since members seem to have changed");
            }
            IADServer localServer = Dependencies.ADConfig.GetLocalServer();

            if (localServer != null)
            {
                topologyInfo = new TopologyInfo();
                if (flag && localServer.DatabaseAvailabilityGroup != null)
                {
                    IADDatabaseAvailabilityGroup localDag = Dependencies.ADConfig.GetLocalDag();
                    if (localDag != null)
                    {
                        topologyInfo.IsConfigured = true;
                        topologyInfo.Name         = localDag.Name;
                        if (this.fixedMemberServersMap.Count == 0)
                        {
                            SortedDictionary <string, string> fixedDagMembers = this.GetFixedDagMembers();
                            if (fixedDagMembers != null && fixedDagMembers.Count > 0)
                            {
                                this.fixedMemberServersMap = fixedDagMembers;
                                this.eventLogger.Log(DxEventSeverity.Info, 0, "Found fixed dag members {0}", new object[]
                                {
                                    string.Join(";", fixedDagMembers.Values)
                                });
                            }
                        }
                        if (this.fixedMemberServersMap.Count > 0)
                        {
                            topologyInfo.Members = this.fixedMemberServersMap.Keys.ToArray <string>();
                        }
                        else if (localDag.Servers != null)
                        {
                            topologyInfo.Members = (from s in localDag.Servers
                                                    select s.Name).ToArray <string>();
                        }
                        topologyInfo.IsAllMembersVersionCompatible = this.versionChecker.CheckVersionCompatibility();
                    }
                }
            }
            return(topologyInfo);
        }
Esempio n. 2
0
 public void Read (TProtocol iprot)
 {
   TField field;
   iprot.ReadStructBegin();
   while (true)
   {
     field = iprot.ReadFieldBegin();
     if (field.Type == TType.Stop) { 
       break;
     }
     switch (field.ID)
     {
       case 0:
         if (field.Type == TType.Struct) {
           Success = new TopologyInfo();
           Success.Read(iprot);
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       case 1:
         if (field.Type == TType.Struct) {
           E = new NotAliveException();
           E.Read(iprot);
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       case 2:
         if (field.Type == TType.Struct) {
           Aze = new AuthorizationException();
           Aze.Read(iprot);
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       default: 
         TProtocolUtil.Skip(iprot, field.Type);
         break;
     }
     iprot.ReadFieldEnd();
   }
   iprot.ReadStructEnd();
 }