/// <summary> /// retry async /// </summary> /// <param name="option"></param> /// <returns></returns> public IAsyncPolicy <WebResponse> GetRetryPolicyAsync(RestOption option) { var jitter = TimeSpan.FromMilliseconds(RandomProvider.GetThreadRandom().Next(0, 100)); return(Policy <WebResponse> .Handle <WebException>(ex => ((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.InternalServerError) .WaitAndRetryAsync(option.RetryCount, retryAttempt => TimeSpan.FromSeconds(Math.Pow(option.SleepDurationSeconds, retryAttempt)) + jitter)); }
/// <summary> /// retry /// </summary> /// <param name="option"></param> /// <returns></returns> public Policy <HttpWebResponse> GetRetryPolicy(RestOption option) { var jitter = TimeSpan.FromMilliseconds(RandomProvider.GetThreadRandom().Next(0, 100)); return(Policy <HttpWebResponse> .Handle <WebException>(r => r.Status == WebExceptionStatus.ProtocolError && ((HttpWebResponse)r.Response).StatusCode >= HttpStatusCode.InternalServerError) .OrResult(r => r.StatusCode >= HttpStatusCode.InternalServerError) .WaitAndRetry(option.RetryCount, retryAttempt => TimeSpan.FromSeconds(Math.Pow(option.SleepDurationSeconds, retryAttempt)) + jitter)); }
/// <summary> /// request option parameters setting /// </summary> /// <param name="option"></param> public void SetOption(RestOption option) { Option = option; }