static RetryPolicyInfoProvider() { RetryPolicyInfoProvider.RetryPolicyOptionsProviders = new Dictionary <Type, Func <IRetryPolicy, Dictionary <string, object> > > { { typeof(IdempotenceAwareRetryPolicy), policy => { var typedPolicy = (IdempotenceAwareRetryPolicy)policy; return(new Dictionary <string, object> { { "childPolicy", RetryPolicyInfoProvider.GetRetryPolicyInfo(typedPolicy.ChildPolicy) } }); } }, { typeof(LoggingRetryPolicy), policy => { var typedPolicy = (LoggingRetryPolicy)policy; return(new Dictionary <string, object> { { "childPolicy", RetryPolicyInfoProvider.GetRetryPolicyInfo(typedPolicy.ChildPolicy) } }); } } }; }
private static PolicyInfo GetRetryPolicyInfo(IRetryPolicy policy) { var retryPolicyType = policy.GetType(); if (retryPolicyType == typeof(RetryPolicyExtensions.WrappedExtendedRetryPolicy)) { var typedPolicy = (RetryPolicyExtensions.WrappedExtendedRetryPolicy)policy; return(RetryPolicyInfoProvider.GetRetryPolicyInfo(typedPolicy.Policy)); } RetryPolicyInfoProvider.RetryPolicyOptionsProviders.TryGetValue(retryPolicyType, out var retryPolicyOptionsProvider); return(new PolicyInfo { Namespace = retryPolicyType.Namespace, Type = retryPolicyType.Name, Options = retryPolicyOptionsProvider?.Invoke(policy) }); }
public PolicyInfo GetPolicyInformation(IExtendedRetryPolicy policy) { return(RetryPolicyInfoProvider.GetRetryPolicyInfo(policy)); }