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); } }
public InstanceManagerConfig GetManagerConfig() { InstanceManagerConfig instanceManagerConfig = new InstanceManagerConfig(); instanceManagerConfig.NameResolver = this; instanceManagerConfig.Self = this.Self; instanceManagerConfig.ComponentName = this.componentName; instanceManagerConfig.IsZeroboxMode = this.isZeroboxMode; instanceManagerConfig.NetworkAddress = instanceManagerConfig.NameResolver.ResolveNameBestEffort(this.Self); instanceManagerConfig.DefaultTimeout = new WcfTimeout(); using (RegistryKey registryKey = this.OpenManagerConfigKey(false)) { instanceManagerConfig.BaseStorageDir = Environment.ExpandEnvironmentVariables(RegUtils.GetProperty <string>(registryKey, "BaseStorageDir", this.DefaultStorageBaseDir)); instanceManagerConfig.InstanceMonitorInterval = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "InstanceMonitorIntervalInMSec", TimeSpan.FromSeconds(15.0)); instanceManagerConfig.EndpointPortNumber = RegUtils.GetProperty <int>(registryKey, "EndpointPortNumber", 808); instanceManagerConfig.EndpointProtocolName = RegUtils.GetProperty <string>(registryKey, "EndpointProtocolName", "net.tcp"); instanceManagerConfig.DefaultTimeout = RegUtils.GetWcfTimeoutProperty(registryKey, "DefaultTimeout", new WcfTimeout()); instanceManagerConfig.ManagerStopTimeout = RegUtils.GetLongPropertyAsTimeSpan(registryKey, "ManagerStopTimeoutInMSec", TimeSpan.FromMinutes(1.0)); CommonSettings defaultSettings = this.CreateDefaultCommonSettings(instanceManagerConfig.EndpointPortNumber, instanceManagerConfig.EndpointProtocolName, instanceManagerConfig.DefaultTimeout); instanceManagerConfig.Settings = new CommonSettings(); this.GetInheritableSettings(this.GetManagerSettingsKeyName(), instanceManagerConfig.Settings, defaultSettings); } return(instanceManagerConfig); }