コード例 #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
 public void GetInheritableSettings(string keyName, CommonSettings settings, CommonSettings defaultSettings)
 {
     using (RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(keyName))
     {
         settings.InstanceProcessName                         = RegUtils.GetProperty <string>(registryKey, "InstanceProcessName", defaultSettings.InstanceProcessName);
         settings.TruncationLimit                             = RegUtils.GetProperty <int>(registryKey, "TruncationLimit", defaultSettings.TruncationLimit);
         settings.TruncationPaddingLength                     = RegUtils.GetProperty <int>(registryKey, "TruncationPaddingLength", defaultSettings.TruncationPaddingLength);
         settings.DurationToWaitBeforeRestart                 = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "DurationToWaitBeforeRestartInMSec", defaultSettings.DurationToWaitBeforeRestart);
         settings.AccessEndpointPortNumber                    = RegUtils.GetProperty <int>(registryKey, "AccessEndpointPortNumber", defaultSettings.AccessEndpointPortNumber);
         settings.AccessEndpointProtocolName                  = RegUtils.GetProperty <string>(registryKey, "AccessEndpointProtocolName", defaultSettings.AccessEndpointProtocolName);
         settings.InstanceEndpointPortNumber                  = RegUtils.GetProperty <int>(registryKey, "InstanceEndpointPortNumber", defaultSettings.InstanceEndpointPortNumber);
         settings.InstanceEndpointProtocolName                = RegUtils.GetProperty <string>(registryKey, "InstanceEndpointProtocolName", defaultSettings.InstanceEndpointProtocolName);
         settings.IsAllowDynamicReconfig                      = RegUtils.GetBoolProperty(registryKey, "IsAllowDynamicReconfig", defaultSettings.IsAllowDynamicReconfig);
         settings.IsAppendOnlyMembership                      = RegUtils.GetBoolProperty(registryKey, "IsAppendOnlyMembership", defaultSettings.IsAppendOnlyMembership);
         settings.IsKillInstanceProcessWhenParentDies         = RegUtils.GetBoolProperty(registryKey, "IsKillInstanceProcessWhenParentDies", defaultSettings.IsKillInstanceProcessWhenParentDies);
         settings.StoreAccessWcfTimeout                       = RegUtils.GetWcfTimeoutProperty(registryKey, "StoreAccessWcfTimeout", defaultSettings.StoreAccessWcfTimeout);
         settings.StoreAccessHttpTimeoutInMSec                = RegUtils.GetProperty <int>(registryKey, "StoreAccessHttpTimeoutInMSec", defaultSettings.StoreAccessHttpTimeoutInMSec);
         settings.StoreInstanceWcfTimeout                     = RegUtils.GetWcfTimeoutProperty(registryKey, "StoreInstanceWcfTimeout", defaultSettings.StoreInstanceWcfTimeout);
         settings.TruncationPeriodicCheckInterval             = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "TruncationPeriodicCheckIntervalInMSec", defaultSettings.TruncationPeriodicCheckInterval);
         settings.InstanceHealthCheckPeriodicInterval         = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "InstanceHealthCheckPeriodicIntervalInMSec", defaultSettings.InstanceHealthCheckPeriodicInterval);
         settings.StateMachineStopTimeout                     = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "StateMachineStopTimeoutInMSec", defaultSettings.StateMachineStopTimeout);
         settings.LeaderPromotionTimeout                      = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "LeaderPromotionTimeoutInMSec", defaultSettings.LeaderPromotionTimeout);
         settings.PaxosCommandExecutionTimeout                = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "PaxosCommandExecutionTimeoutInMSec", defaultSettings.PaxosCommandExecutionTimeout);
         settings.GroupHealthCheckDuration                    = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "GroupHealthCheckDurationInMSec", defaultSettings.GroupHealthCheckDuration);
         settings.GroupHealthCheckAggressiveDuration          = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "GroupHealthCheckAggressiveDurationInMSec", defaultSettings.GroupHealthCheckAggressiveDuration);
         settings.GroupStatusWaitTimeout                      = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "GroupStatusWaitTimeoutInMSec", defaultSettings.GroupStatusWaitTimeout);
         settings.MemberReconfigureTimeout                    = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "MemberReconfigureTimeoutInMSec", defaultSettings.MemberReconfigureTimeout);
         settings.PaxosUpdateTimeout                          = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "PaxosUpdateTimeoutInMSec", defaultSettings.PaxosUpdateTimeout);
         settings.SnapshotUpdateInterval                      = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "SnapshotUpdateIntervalInMSec", defaultSettings.SnapshotUpdateInterval);
         settings.PeriodicExceptionLoggingDuration            = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "PeriodicExceptionLoggingDurationInMSec", defaultSettings.PeriodicExceptionLoggingDuration);
         settings.PeriodicTimeoutLoggingDuration              = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "PeriodicTimeoutLoggingDurationInMSec", defaultSettings.PeriodicTimeoutLoggingDuration);
         settings.ServiceHostCloseTimeout                     = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "ServiceHostCloseTimeoutInMSec", defaultSettings.ServiceHostCloseTimeout);
         settings.MaxAllowedLagToCatchup                      = RegUtils.GetProperty <int>(registryKey, "MaxAllowedLagToCatchup", defaultSettings.MaxAllowedLagToCatchup);
         settings.DefaultSnapshotFileName                     = RegUtils.GetProperty <string>(registryKey, "DefaultSnapshotFileName", defaultSettings.DefaultSnapshotFileName);
         settings.MaxEntriesToKeep                            = RegUtils.GetProperty <int>(registryKey, "MaxEntriesToKeep", defaultSettings.MaxEntriesToKeep);
         settings.MaximumAllowedInstanceNumberLag             = RegUtils.GetProperty <int>(registryKey, "MaximumAllowedInstanceNumberLag", defaultSettings.MaximumAllowedInstanceNumberLag);
         settings.DefaultHealthCheckRequiredNodePercent       = RegUtils.GetProperty <int>(registryKey, "DefaultHealthCheckRequiredNodePercent", defaultSettings.DefaultHealthCheckRequiredNodePercent);
         settings.AdditionalLogOptions                        = (LogOptions)RegUtils.GetProperty <int>(registryKey, "AdditionalLogOptions", defaultSettings.AdditionalLogOptionsAsInt);
         settings.InstanceStartSilenceDuration                = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "InstanceStartSilenceDurationInMSec", defaultSettings.InstanceStartSilenceDuration);
         settings.InstanceStartHoldupDurationMaxAllowedStarts = RegUtils.GetProperty <int>(registryKey, "InstanceStartHoldupDurationMaxAllowedStarts", defaultSettings.InstanceStartHoldupDurationMaxAllowedStarts);
         settings.InstanceStartHoldUpDuration                 = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "InstanceStartHoldUpDurationInMSec", defaultSettings.InstanceStartHoldUpDuration);
         settings.InstanceMemoryCommitSizeLimitInMb           = RegUtils.GetProperty <int>(registryKey, "InstanceMemoryCommitSizeLimitInMb", defaultSettings.InstanceMemoryCommitSizeLimitInMb);
         settings.IsUseHttpTransportForInstanceCommunication  = RegUtils.GetBoolProperty(registryKey, "IsUseHttpTransportForInstanceCommunication", defaultSettings.IsUseHttpTransportForInstanceCommunication);
         settings.IsUseHttpTransportForClientCommunication    = RegUtils.GetBoolProperty(registryKey, "IsUseHttpTransportForClientCommunication", defaultSettings.IsUseHttpTransportForClientCommunication);
         settings.IsUseBinarySerializerForClientCommunication = RegUtils.GetBoolProperty(registryKey, "IsUseBinarySerializerForClientCommunication", defaultSettings.IsUseBinarySerializerForClientCommunication);
         settings.IsUseEncryption                             = RegUtils.GetBoolProperty(registryKey, "IsUseEncryption", defaultSettings.IsUseEncryption);
         settings.StartupDelay = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "StartupDelayInMSec", defaultSettings.StartupDelay);
     }
 }
コード例 #3
0
        public InstanceGroupMemberConfig[] GetGroupMemberConfigs(string groupName)
        {
            List <InstanceGroupMemberConfig> list = new List <InstanceGroupMemberConfig>();

            string[] groupMemberNames = this.GetGroupMemberNames(groupName);
            foreach (string text in groupMemberNames)
            {
                InstanceGroupMemberConfig instanceGroupMemberConfig = new InstanceGroupMemberConfig
                {
                    Name = text
                };
                using (RegistryKey registryKey = this.OpenGroupMemberConfigKey(groupName, text, false))
                {
                    instanceGroupMemberConfig.NetworkAddress      = RegUtils.GetProperty <string>(registryKey, "NetworkAddress", string.Empty);
                    instanceGroupMemberConfig.IsWitness           = RegUtils.GetBoolProperty(registryKey, "IsWitness", false);
                    instanceGroupMemberConfig.IsManagedExternally = RegUtils.GetBoolProperty(registryKey, "IsManagedExternally", false);
                    list.Add(instanceGroupMemberConfig);
                }
            }
            return(list.ToArray());
        }