public void SetOperationTimeout(string operation, RequestTimeoutType settingType, TimeSpan timeout) { string key = GenerateOperationTimeoutKey(operation); if (!requestTimeoutSettings.ContainsKey(key)) { requestTimeoutSettings.TryAdd(key, new ConcurrentDictionary <RequestTimeoutType, TimeSpan>()); } requestTimeoutSettings[key][settingType] = timeout; }
protected internal TimeSpan GetDefaultTimeout(RequestTimeoutType settingType) { TimeSpan timeout; switch (settingType) { case RequestTimeoutType.ReadWriteTimeout: timeout = ReadWriteTimeout ?? DefaultRequestReadWriteTimeout; break; default: timeout = Timeout ?? DefaultRequestTimeout; break; } return(timeout); }
protected internal TimeSpan GetOperationTimeout(string operation, RequestTimeoutType settingType) { TimeSpan?currentRequestTimeout = GetCurrentRequestTimeout(settingType); if (currentRequestTimeout.HasValue) { return(currentRequestTimeout.Value); } string key = GenerateOperationTimeoutKey(operation); if (requestTimeoutSettings.ContainsKey(key) && requestTimeoutSettings[key].ContainsKey(settingType)) { return(requestTimeoutSettings[key][settingType]); } return(GetDefaultTimeout(settingType)); }
protected internal TimeSpan?GetCurrentRequestTimeout(RequestTimeoutType settingType) { return(settingType == RequestTimeoutType.Timeout ? CurrentRequestTimeout : CurrentRequestReadWriteTimeout); }
private void InitOperationTimeoutSettings(string serviceName, string serviceNamespace, RequestTimeoutType settingType, string settingKey) { string settingValue = GetServiceSettingKey(settingKey, serviceName, serviceNamespace); string config = ConfigUtils.GetNullableAppSetting(settingValue); if (!string.IsNullOrWhiteSpace(config)) { string[] operationSettings = config.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); TimeSpan defaultTimeout = GetDefaultTimeout(settingType); int timeoutMilliseconds; TimeSpan timeout; foreach (string operationSetting in operationSettings) { string[] setting = operationSetting.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (setting.Length != 2) { continue; } string operation = setting[0].Trim(); timeout = defaultTimeout; if (int.TryParse(setting[1].Trim(), out timeoutMilliseconds)) { timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); } string key = GenerateOperationTimeoutKey(operation); if (!requestTimeoutSettings.ContainsKey(key)) { requestTimeoutSettings[key] = new ConcurrentDictionary <RequestTimeoutType, TimeSpan>(); } requestTimeoutSettings[key][settingType] = timeout; } } }