コード例 #1
0
 public HttpConnectionWebReaderManager(IHttpConnectionFactory httpConnectionFactory, IHttpConnectionRequestFactory httpConnectionRequestFactory, IWebReaderManagerParameters webReaderManagerParameters, IContentTypeDetector contentTypeDetector, IRetryManager retryManager)
 {
     if (null == httpConnectionFactory)
     {
         throw new ArgumentNullException("httpConnectionFactory");
     }
     if (null == httpConnectionRequestFactory)
     {
         throw new ArgumentNullException("httpConnectionRequestFactory");
     }
     if (null == webReaderManagerParameters)
     {
         throw new ArgumentNullException("webReaderManagerParameters");
     }
     if (null == contentTypeDetector)
     {
         throw new ArgumentNullException("contentTypeDetector");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._httpConnectionFactory        = httpConnectionFactory;
     this._httpConnectionRequestFactory = httpConnectionRequestFactory;
     this._webReaderManagerParameters   = webReaderManagerParameters;
     this._contentTypeDetector          = contentTypeDetector;
     this._retryManager = retryManager;
 }
コード例 #2
0
ファイル: SegmentReader.cs プロジェクト: henricj/phonesm
        public SegmentReader(ISegment segment, IWebReader webReader, IWebMetadataFactory webMetadataFactory, IRetryManager retryManager, IPlatformServices platformServices)
        {
            if (null == segment)
                throw new ArgumentNullException(nameof(segment));
            if (null == webReader)
                throw new ArgumentNullException(nameof(webReader));
            if (null == webMetadataFactory)
                throw new ArgumentNullException(nameof(webMetadataFactory));
            if (null == retryManager)
                throw new ArgumentNullException(nameof(retryManager));
            if (null == platformServices)
                throw new ArgumentNullException(nameof(platformServices));

            _segment = segment;
            _webReader = webReader;
            _webMetadataFactory = webMetadataFactory;
            _retryManager = retryManager;
            _platformServices = platformServices;

            if ((segment.Offset >= 0) && (segment.Length > 0))
            {
                _startOffset = segment.Offset;
                _endOffset = segment.Offset + segment.Length - 1;
            }
        }
コード例 #3
0
 public SegmentReader(ISegment segment, IWebReader webReader, IWebMetadataFactory webMetadataFactory, IRetryManager retryManager, IPlatformServices platformServices)
 {
     if (null == segment)
     {
         throw new ArgumentNullException("segment");
     }
     if (null == webReader)
     {
         throw new ArgumentNullException("webReader");
     }
     if (null == webMetadataFactory)
     {
         throw new ArgumentNullException("webMetadataFactory");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     if (null == platformServices)
     {
         throw new ArgumentNullException("platformServices");
     }
     this._segment            = segment;
     this._webReader          = webReader;
     this._webMetadataFactory = webMetadataFactory;
     this._retryManager       = retryManager;
     this._platformServices   = platformServices;
     if (segment.Offset < 0L || segment.Length <= 0L)
     {
         return;
     }
     this._startOffset = new long?(segment.Offset);
     this._endOffset   = new long?(segment.Offset + segment.Length - 1L);
 }
 public RetryingHttpClientDecorator(
     IRetryManager retryManager,
     IEnumerable <IHttpClientEventCallback> callbacks)
 {
     _retryManager = retryManager;
     _callbacks    = callbacks;
 }
コード例 #5
0
 private MessageSubscriber(
     IReadOnlyCollection <IMessageConsumer> messageConsumers,
     IReadOnlyCollection <IMessageProcessor> messageProcessors,
     IRejectManager rejectManager,
     IRetryManager retryManager)
 {
     _messageConsumers  = messageConsumers;
     _messageProcessors = messageProcessors;
     _rejectManager     = rejectManager;
     _retryManager      = retryManager;
 }
コード例 #6
0
 public static IHttpClient AddRetrying(
     this IHttpClient httpClient,
     IHttpApiWithRetrying httpApiWithRetrying,
     IRetryManager retryManager,
     IEnumerable <IHttpClientEventCallback> callbacks)
 {
     return(new RetryingHttpClient(
                httpClient,
                httpApiWithRetrying,
                retryManager.GetPredicate(httpApiWithRetrying.RetryPolicy),
                retryManager.GetDelay(httpApiWithRetrying.RetryPolicy),
                callbacks));
 }
コード例 #7
0
        public PlsSegmentManagerFactory(IWebReaderManager webReaderManager, IPlsSegmentManagerPolicy plsSegmentManagerPolicy, IRetryManager retryManager)
        {
            if (null == webReaderManager)
                throw new ArgumentNullException(nameof(webReaderManager));
            if (null == plsSegmentManagerPolicy)
                throw new ArgumentNullException(nameof(plsSegmentManagerPolicy));
            if (null == retryManager)
                throw new ArgumentNullException(nameof(retryManager));

            _webReaderManager = webReaderManager;
            _plsSegmentManagerPolicy = plsSegmentManagerPolicy;
            _retryManager = retryManager;
        }
コード例 #8
0
 public HttpConnectionWebCache(HttpConnectionWebReader webReader, IRetryManager retryManager)
 {
     if (webReader == null)
     {
         throw new ArgumentNullException("webReader");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._webReader    = webReader;
     this._retryManager = retryManager;
 }
コード例 #9
0
        /// <summary>
        /// </summary>
        /// <param name="parser"></param>
        /// <param name="webReader"></param>
        /// <param name="retryManager"></param>
        /// <param name="playlist"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public static Task<Uri> ParseAsync(this M3U8Parser parser, IWebReader webReader, IRetryManager retryManager, Uri playlist, CancellationToken cancellationToken)
        {
            var retry = retryManager.CreateWebRetry(2, 250);

            return retry.CallAsync(() =>
                webReader.ReadStreamAsync(playlist, retry, (actualPlaylist, stream) =>
                {
                    parser.Parse(actualPlaylist, stream);

                    return actualPlaylist;
                }, cancellationToken),
                cancellationToken);
        }
コード例 #10
0
        public WinRtHttpClientWebReaderManager(IWinRtHttpClientFactory httpClientFactory, IContentTypeDetector contentTypeDetector, IRetryManager retryManager)
        {
            if (null == httpClientFactory)
                throw new ArgumentNullException(nameof(httpClientFactory));
            if (null == contentTypeDetector)
                throw new ArgumentNullException(nameof(contentTypeDetector));
            if (null == retryManager)
                throw new ArgumentNullException(nameof(retryManager));

            _httpClientFactory = httpClientFactory;
            _contentTypeDetector = contentTypeDetector;
            _retryManager = retryManager;
        }
コード例 #11
0
ファイル: HlsProgramManager.cs プロジェクト: henricj/phonesm
        public HlsProgramManager(IHlsProgramStreamFactory programStreamFactory, IWebReaderManager webReaderManager, IRetryManager retryManager)
        {
            if (null == programStreamFactory)
                throw new ArgumentNullException(nameof(programStreamFactory));
            if (null == webReaderManager)
                throw new ArgumentNullException(nameof(webReaderManager));
            if (null == retryManager)
                throw new ArgumentNullException(nameof(retryManager));

            _programStreamFactory = programStreamFactory;
            _webReaderManager = webReaderManager;
            _retryManager = retryManager;
        }
コード例 #12
0
        public SegmentReaderManagerFactory(ISegmentManagerFactory segmentManagerFactory, IWebMetadataFactory webMetadataFactory, IRetryManager retryManager, IPlatformServices platformServices)
        {
            if (null == segmentManagerFactory)
                throw new ArgumentNullException(nameof(segmentManagerFactory));
            if (null == webMetadataFactory)
                throw new ArgumentNullException(nameof(webMetadataFactory));
            if (null == retryManager)
                throw new ArgumentNullException(nameof(retryManager));
            if (null == platformServices)
                throw new ArgumentNullException(nameof(platformServices));

            _segmentManagerFactory = segmentManagerFactory;
            _webMetadataFactory = webMetadataFactory;
            _retryManager = retryManager;
            _platformServices = platformServices;
        }
コード例 #13
0
 public HttpClientWebReaderManager(IHttpClientFactory httpClientFactory, IContentTypeDetector contentTypeDetector, IRetryManager retryManager)
 {
     if (null == httpClientFactory)
     {
         throw new ArgumentNullException("httpClientFactory");
     }
     if (null == contentTypeDetector)
     {
         throw new ArgumentNullException("contentTypeDetector");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._httpClientFactory   = httpClientFactory;
     this._contentTypeDetector = contentTypeDetector;
     this._retryManager        = retryManager;
 }
コード例 #14
0
 public HlsProgramManager(IHlsProgramStreamFactory programStreamFactory, IWebReaderManager webReaderManager, IRetryManager retryManager)
 {
     if (null == programStreamFactory)
     {
         throw new ArgumentNullException("programStreamFactory");
     }
     if (null == webReaderManager)
     {
         throw new ArgumentNullException("webReaderManager");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._programStreamFactory = programStreamFactory;
     this._webReaderManager     = webReaderManager;
     this._retryManager         = retryManager;
 }
コード例 #15
0
 public HlsProgramManager(IHlsProgramStreamFactory programStreamFactory, IWebReaderManager webReaderManager, IRetryManager retryManager)
 {
     if (null == programStreamFactory)
     {
         throw new ArgumentNullException(nameof(programStreamFactory));
     }
     if (null == webReaderManager)
     {
         throw new ArgumentNullException(nameof(webReaderManager));
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException(nameof(retryManager));
     }
     _programStreamFactory = programStreamFactory;
     _webReaderManager     = webReaderManager;
     _retryManager         = retryManager;
 }
コード例 #16
0
ファイル: HlsStreamSegments.cs プロジェクト: henricj/phonesm
        public HlsStreamSegments(M3U8Parser parser, IWebReader webReader, IRetryManager retryManager, IPlatformServices platformServices)
        {
            if (null == parser)
                throw new ArgumentNullException(nameof(parser));
            if (null == webReader)
                throw new ArgumentNullException(nameof(webReader));
            if (null == retryManager)
                throw new ArgumentNullException(nameof(retryManager));
            if (null == platformServices)
                throw new ArgumentNullException(nameof(platformServices));

            _parser = parser;
            _webReader = webReader;
            _retryManager = retryManager;
            _platformServices = platformServices;

            _mediaSequence = M3U8Tags.ExtXMediaSequence.GetValue<long>(parser.GlobalTags);
        }
コード例 #17
0
 public HttpWebRequestWebCache(HttpWebRequestWebReader webReader, IHttpWebRequests httpWebRequests, IRetryManager retryManager)
 {
     if (webReader == null)
     {
         throw new ArgumentNullException("webReader");
     }
     if (null == httpWebRequests)
     {
         throw new ArgumentNullException("httpWebRequests");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._webReader       = webReader;
     this._httpWebRequests = httpWebRequests;
     this._retryManager    = retryManager;
 }
コード例 #18
0
 public PlsSegmentManagerFactory(IWebReaderManager webReaderManager, IPlsSegmentManagerPolicy plsSegmentManagerPolicy, IRetryManager retryManager)
 {
     if (null == webReaderManager)
     {
         throw new ArgumentNullException("webReaderManager");
     }
     if (null == plsSegmentManagerPolicy)
     {
         throw new ArgumentNullException("plsSegmentManagerPolicy");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._webReaderManager        = webReaderManager;
     this._plsSegmentManagerPolicy = plsSegmentManagerPolicy;
     this._retryManager            = retryManager;
 }
コード例 #19
0
 public PlsSegmentManagerFactory(IWebReaderManager webReaderManager, IPlsSegmentManagerPolicy plsSegmentManagerPolicy, IRetryManager retryManager)
 {
     if (null == webReaderManager)
     {
         throw new ArgumentNullException(nameof(webReaderManager));
     }
     if (null == plsSegmentManagerPolicy)
     {
         throw new ArgumentNullException(nameof(plsSegmentManagerPolicy));
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException(nameof(retryManager));
     }
     _webReaderManager        = webReaderManager;
     _plsSegmentManagerPolicy = plsSegmentManagerPolicy;
     _retryManager            = retryManager;
 }
コード例 #20
0
        public HttpConnectionWebReaderManager(IHttpConnectionFactory httpConnectionFactory, IHttpConnectionRequestFactory httpConnectionRequestFactory, IWebReaderManagerParameters webReaderManagerParameters, IContentTypeDetector contentTypeDetector, IRetryManager retryManager)
        {
            if (null == httpConnectionFactory)
                throw new ArgumentNullException(nameof(httpConnectionFactory));
            if (null == httpConnectionRequestFactory)
                throw new ArgumentNullException(nameof(httpConnectionRequestFactory));
            if (null == webReaderManagerParameters)
                throw new ArgumentNullException(nameof(webReaderManagerParameters));
            if (null == contentTypeDetector)
                throw new ArgumentNullException(nameof(contentTypeDetector));
            if (null == retryManager)
                throw new ArgumentNullException(nameof(retryManager));

            _httpConnectionFactory = httpConnectionFactory;
            _httpConnectionRequestFactory = httpConnectionRequestFactory;
            _webReaderManagerParameters = webReaderManagerParameters;
            _contentTypeDetector = contentTypeDetector;
            _retryManager = retryManager;
        }
コード例 #21
0
ファイル: HlsProgramStream.cs プロジェクト: henricj/phonesm
        public HlsProgramStream(IWebReader webReader, ICollection<Uri> urls, ContentType contentType, ContentType streamContentType, IHlsSegmentsFactory segmentsFactory, IWebMetadataFactory webMetadataFactory, IPlatformServices platformServices, IRetryManager retryManager)
        {
            if (null == segmentsFactory)
                throw new ArgumentNullException(nameof(segmentsFactory));
            if (null == webMetadataFactory)
                throw new ArgumentNullException(nameof(webMetadataFactory));
            if (null == webReader)
                throw new ArgumentNullException(nameof(webReader));
            if (null == platformServices)
                throw new ArgumentNullException(nameof(platformServices));
            if (null == retryManager)
                throw new ArgumentNullException(nameof(retryManager));

            _webReader = webReader;
            _segmentsFactory = segmentsFactory;
            _webMetadataFactory = webMetadataFactory;
            Urls = urls;
            ContentType = contentType;
            StreamContentType = streamContentType;
        }
コード例 #22
0
 public HlsProgramStreamFactory(IHlsSegmentsFactory segmentsFactory, IWebMetadataFactory webMetadataFactory, IPlatformServices platformServices, IRetryManager retryManager)
 {
     if (null == segmentsFactory)
     {
         throw new ArgumentNullException("segmentsFactory");
     }
     if (null == webMetadataFactory)
     {
         throw new ArgumentNullException("webMetadataFactory");
     }
     if (null == platformServices)
     {
         throw new ArgumentNullException("platformServices");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._segmentsFactory    = segmentsFactory;
     this._webMetadataFactory = webMetadataFactory;
     this._platformServices   = platformServices;
     this._retryManager       = retryManager;
 }
コード例 #23
0
 public SegmentReaderEnumerable(ISegmentManager segmentManager, IWebMetadataFactory webMetadataFactory, IRetryManager retryManager, IPlatformServices platformServices)
 {
     if (null == segmentManager)
     {
         throw new ArgumentNullException("segmentManager");
     }
     if (null == webMetadataFactory)
     {
         throw new ArgumentNullException("webMetadataFactory");
     }
     if (null == platformServices)
     {
         throw new ArgumentNullException("platformServices");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._segmentManager     = segmentManager;
     this._webMetadataFactory = webMetadataFactory;
     this._platformServices   = platformServices;
     this._retryManager       = retryManager;
 }
コード例 #24
0
 public HlsProgramStreamFactory(IHlsSegmentsFactory segmentsFactory, IWebMetadataFactory webMetadataFactory, IPlatformServices platformServices, IRetryManager retryManager)
 {
     if (null == segmentsFactory)
     {
         throw new ArgumentNullException(nameof(segmentsFactory));
     }
     if (null == webMetadataFactory)
     {
         throw new ArgumentNullException(nameof(webMetadataFactory));
     }
     if (null == platformServices)
     {
         throw new ArgumentNullException(nameof(platformServices));
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException(nameof(retryManager));
     }
     _segmentsFactory    = segmentsFactory;
     _webMetadataFactory = webMetadataFactory;
     _platformServices   = platformServices;
     _retryManager       = retryManager;
 }
コード例 #25
0
        public SegmentReaderManagerFactory(ISegmentManagerFactory segmentManagerFactory, IWebMetadataFactory webMetadataFactory, IRetryManager retryManager, IPlatformServices platformServices)
        {
            if (null == segmentManagerFactory)
            {
                throw new ArgumentNullException(nameof(segmentManagerFactory));
            }
            if (null == webMetadataFactory)
            {
                throw new ArgumentNullException(nameof(webMetadataFactory));
            }
            if (null == retryManager)
            {
                throw new ArgumentNullException(nameof(retryManager));
            }
            if (null == platformServices)
            {
                throw new ArgumentNullException(nameof(platformServices));
            }

            _segmentManagerFactory = segmentManagerFactory;
            _webMetadataFactory    = webMetadataFactory;
            _retryManager          = retryManager;
            _platformServices      = platformServices;
        }
コード例 #26
0
        public MessageProcessor(
            TimeSpan defaultRetryTimeout,
            ICompositeFormatterResolver formatterResolver,
            IInternalMessageQueue internalQueue,
            ILogFactory logFactory,
            Func <string, IMessagePublisher> repliesPublisher,
            IRejectManager rejectManager,
            IRetryManager retryManager,
            IServiceProvider serviceProvider,
            IMessageSubscriptionsRegistry subscriptionsRegistry) : base(logFactory)
        {
            _defaultRetryTimeout = defaultRetryTimeout;
            _formatterResolver   = formatterResolver;
            _internalQueue       = internalQueue;
            _log                   = logFactory.CreateLog(this);
            _logFactory            = logFactory;
            _repliesPublisher      = repliesPublisher;
            _rejectManager         = rejectManager;
            _retryManager          = retryManager;
            _serviceProvider       = serviceProvider;
            _subscriptionsRegistry = subscriptionsRegistry;

            _id = Interlocked.Increment(ref _instanceCounter);
        }
コード例 #27
0
 public HlsStreamSegments(M3U8Parser parser, IWebReader webReader, IRetryManager retryManager, IPlatformServices platformServices)
 {
     if (null == parser)
     {
         throw new ArgumentNullException("parser");
     }
     if (null == webReader)
     {
         throw new ArgumentNullException("webReader");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     if (null == platformServices)
     {
         throw new ArgumentNullException("platformServices");
     }
     this._parser           = parser;
     this._webReader        = webReader;
     this._retryManager     = retryManager;
     this._platformServices = platformServices;
     this._mediaSequence    = M3U8Tags.ExtXMediaSequence.GetValue <long>(parser.GlobalTags);
 }
コード例 #28
0
 public SegmentReaderManager(IEnumerable <ISegmentManager> segmentManagers, IWebMetadataFactory webMetadataFactory, IRetryManager retryManager, IPlatformServices platformServices)
 {
     if (null == segmentManagers)
     {
         throw new ArgumentNullException("segmentManagers");
     }
     if (null == webMetadataFactory)
     {
         throw new ArgumentNullException("webMetadataFactory");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     if (null == platformServices)
     {
         throw new ArgumentNullException("platformServices");
     }
     this._segmentManagers = Enumerable.ToArray <ISegmentManager>(segmentManagers);
     if (this._segmentManagers.Length < 1)
     {
         throw new ArgumentException("No segment managers provided");
     }
     this._segmentReaders = Enumerable.ToArray <SegmentReaderManager.ManagerReaders>(Enumerable.Select <ISegmentManager, SegmentReaderManager.ManagerReaders>((IEnumerable <ISegmentManager>) this._segmentManagers, (Func <ISegmentManager, SegmentReaderManager.ManagerReaders>)(sm => new SegmentReaderManager.ManagerReaders()
     {
         Manager = sm,
         Readers = (IAsyncEnumerable <ISegmentReader>) new SegmentReaderManager.SegmentReaderEnumerable(sm, webMetadataFactory, retryManager, platformServices)
     })));
 }
コード例 #29
0
ファイル: RetryManagerTests.cs プロジェクト: z4kn4fein/trybot
 public void Init()
 {
     this.executionPolicy = new FixedIntervalRetryStartegy(5, TimeSpan.FromMilliseconds(5));
     var mockRetryPolicy = new Mock<IRetryPolicy>();
     mockRetryPolicy.Setup(policy => policy.ShouldRetryAfter(It.IsAny<Exception>())).Returns(true);
     this.retryManager = new RetryManager(mockRetryPolicy.Object);
 }
コード例 #30
0
 public HlsStreamSegmentsFactory(IRetryManager retryManager, IPlatformServices platformServices)
 {
     _retryManager = retryManager;
     _platformServices = platformServices;
 }
コード例 #31
0
 public HlsProgramStream(IWebReader webReader, ICollection <Uri> urls, IHlsSegmentsFactory segmentsFactory, IWebMetadataFactory webMetadataFactory, IPlatformServices platformServices, IRetryManager retryManager)
 {
     if (null == segmentsFactory)
     {
         throw new ArgumentNullException(nameof(segmentsFactory));
     }
     if (null == webMetadataFactory)
     {
         throw new ArgumentNullException(nameof(webMetadataFactory));
     }
     if (null == webReader)
     {
         throw new ArgumentNullException(nameof(webReader));
     }
     if (null == platformServices)
     {
         throw new ArgumentNullException(nameof(platformServices));
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException(nameof(retryManager));
     }
     _webReader          = webReader;
     _segmentsFactory    = segmentsFactory;
     _webMetadataFactory = webMetadataFactory;
     Urls = urls;
 }
コード例 #32
0
 public HlsProgramStream(IWebReader webReader, ICollection <Uri> urls, IHlsSegmentsFactory segmentsFactory, IWebMetadataFactory webMetadataFactory, IPlatformServices platformServices, IRetryManager retryManager)
 {
     if (null == segmentsFactory)
     {
         throw new ArgumentNullException("segmentsFactory");
     }
     if (null == webMetadataFactory)
     {
         throw new ArgumentNullException("webMetadataFactory");
     }
     if (null == webReader)
     {
         throw new ArgumentNullException("webReader");
     }
     if (null == platformServices)
     {
         throw new ArgumentNullException("platformServices");
     }
     if (null == retryManager)
     {
         throw new ArgumentNullException("retryManager");
     }
     this._webReader          = webReader;
     this._segmentsFactory    = segmentsFactory;
     this._webMetadataFactory = webMetadataFactory;
     this.Urls = urls;
 }
コード例 #33
0
        public static Task <Uri> ParseAsync(this M3U8Parser parser, IWebReader webReader, IRetryManager retryManager, Uri playlist, CancellationToken cancellationToken)
        {
            IRetry retry = RetryManagerExtensions.CreateWebRetry(retryManager, 2, 250);

            return(retry.CallAsync <Uri>((Func <Task <Uri> >)(() => WebReaderExtensions.ReadStreamAsync <Uri>(webReader, playlist, retry, (Func <Uri, Stream, Uri>)((actualPlaylist, stream) =>
            {
                M3U8ParserExtensions.Parse(parser, actualPlaylist, stream, (Encoding)null);
                return actualPlaylist;
            }), cancellationToken)), cancellationToken));
        }
コード例 #34
0
 public HlsStreamSegmentsFactory(IRetryManager retryManager, IPlatformServices platformServices)
 {
     this._retryManager     = retryManager;
     this._platformServices = platformServices;
 }
コード例 #35
0
 public static IRetry CreateWebRetry(this IRetryManager retryManager, int maxRetries, int delayMilliseconds)
 {
     return(retryManager.CreateRetry(maxRetries, delayMilliseconds, new Func <Exception, bool>(RetryPolicy.IsWebExceptionRetryable)));
 }