예제 #1
0
        public InstanceGroupConfig GetGroupConfig(string groupName, bool isFillDefaultValueIfNotExist = false)
        {
            InstanceGroupConfig instanceGroupConfig = null;

            groupName = this.ResolveGroupName(groupName);
            if (string.IsNullOrEmpty(groupName) && isFillDefaultValueIfNotExist)
            {
                groupName = "B1563499-EA40-4101-A9E6-59A8EB26FF1E";
            }
            using (RegistryKey registryKey = this.OpenGroupConfigKey(groupName, false))
            {
                if (registryKey != null || isFillDefaultValueIfNotExist)
                {
                    instanceGroupConfig = new InstanceGroupConfig();
                    instanceGroupConfig.NameResolver            = this;
                    instanceGroupConfig.Self                    = this.Self;
                    instanceGroupConfig.ComponentName           = this.componentName;
                    instanceGroupConfig.IsZeroboxMode           = this.isZeroboxMode;
                    instanceGroupConfig.Name                    = groupName;
                    instanceGroupConfig.IsExistInConfigProvider = (registryKey != null);
                    instanceGroupConfig.Identity                = string.Format("Group/{0}/{1}/{2}", this.componentName, groupName, this.Self);
                    string defaultGroupName = this.GetDefaultGroupName();
                    instanceGroupConfig.IsAutomaticActionsAllowed        = RegUtils.GetBoolProperty(registryKey, "IsAutomaticActionsAllowed", false);
                    instanceGroupConfig.IsRestartRequested               = RegUtils.GetBoolProperty(registryKey, "IsRestartRequested", false);
                    instanceGroupConfig.IsConfigurationManagedExternally = RegUtils.GetBoolProperty(registryKey, "IsConfigurationManagedExternally", false);
                    instanceGroupConfig.ConfigInProgressExpiryTime       = RegUtils.GetTimeProperty(registryKey, "ConfigInProgressExpiryTime");
                    instanceGroupConfig.IsDefaultGroup       = Utils.IsEqual(groupName, defaultGroupName, StringComparison.OrdinalIgnoreCase);
                    instanceGroupConfig.IsConfigurationReady = (DateTimeOffset.Now > instanceGroupConfig.ConfigInProgressExpiryTime);
                    instanceGroupConfig.Members  = this.GetGroupMemberConfigs(groupName);
                    instanceGroupConfig.Settings = this.GetGroupSettings(groupName);
                }
            }
            return(instanceGroupConfig);
        }
예제 #2
0
 internal static DateTimeOffset GetTimeProperty(RegistryKey key, string propertyName)
 {
     return(RegUtils.GetTimeProperty(key, propertyName, DateTimeOffset.MinValue));
 }