public async Task<ISegmentManager> CreateAsync(ISegmentManagerParameters parameters, ContentType contentType, CancellationToken cancellationToken) { var subProgram = await _hlsPlaylistSegmentManagerPolicy.CreateSubProgramAsync(parameters.Source, parameters.ContentType ?? contentType, parameters.StreamContentType, cancellationToken).ConfigureAwait(false); var segmentManager = new HlsPlaylistSegmentManager(subProgram.Video, parameters.ContentType ?? contentType, parameters.StreamContentType, _platformServices, cancellationToken); return segmentManager; }
public Task<ISegmentManager> CreateAsync(ISegmentManagerParameters parameters, ContentType contentType, CancellationToken cancellationToken) { var webReader = parameters.WebReader ?? _webReaderManager.CreateRootReader(ContentKind.AnyMedia, contentType); var segmentManager = new SimpleSegmentManager(webReader, parameters.Source, parameters.ContentType ?? contentType, parameters.StreamContentType); return Task.FromResult<ISegmentManager>(segmentManager); }
public async Task<ISegmentReaderManager> CreateAsync(ISegmentManagerParameters parameters, CancellationToken cancellationToken) { ISegmentManager playlist; var contentType = parameters.ContentType; if (null == contentType) playlist = await _segmentManagerFactory.CreateAsync(parameters, cancellationToken).ConfigureAwait(false); else playlist = await _segmentManagerFactory.CreateAsync(parameters, contentType, cancellationToken).ConfigureAwait(false); if (null == playlist) throw new FileNotFoundException("Unable to create playlist"); return new SegmentReaderManager(new[] { playlist }, _webMetadataFactory, _retryManager, _platformServices); }
public virtual async Task <ISegmentManager> CreateAsync(ISegmentManagerParameters parameters, ContentType contentType, CancellationToken cancellationToken) { foreach (var uri in parameters.Source) { var localUrl = uri; var retry = _retryManager.CreateWebRetry(3, 333); var segmentManager = await retry.CallAsync(async() => { var webReader = _webReaderManager.CreateReader(localUrl, ContentTypes.Pls.Kind, null, ContentTypes.Pls); ISegmentManager segmentManager2; try { using (var webStreamResponse = await webReader.GetWebStreamAsync(localUrl, false, cancellationToken, null, new long?(), new long?())) { if (!webStreamResponse.IsSuccessStatusCode) { webReader.Dispose(); segmentManager2 = null; } else { using (var stream = await webStreamResponse.GetStreamAsync(cancellationToken)) segmentManager2 = await ReadPlaylistAsync(webReader, webStreamResponse.ActualUrl, stream, cancellationToken); } } } catch (Exception) { webReader.Dispose(); throw; } return(segmentManager2); }, cancellationToken); if (null == segmentManager) { continue; } return(segmentManager); } return(null); }
public async Task <ISegmentReaderManager> CreateAsync(ISegmentManagerParameters parameters, ContentType contentType, CancellationToken cancellationToken) { ISegmentManager playlist; if ((ContentType)null == contentType) { playlist = await this._segmentManagerFactory.CreateAsync(parameters, cancellationToken).ConfigureAwait(false); } else { playlist = await this._segmentManagerFactory.CreateAsync(parameters, contentType, cancellationToken).ConfigureAwait(false); } if (null == playlist) { throw new FileNotFoundException("Unable to create playlist"); } return((ISegmentReaderManager) new SegmentReaderManager((IEnumerable <ISegmentManager>) new ISegmentManager[1] { playlist }, this._webMetadataFactory, this._retryManager, this._platformServices)); }
public async Task <ISegmentReaderManager> CreateAsync(ISegmentManagerParameters parameters, ContentType contentType, CancellationToken cancellationToken) { ISegmentManager playlist; if (null == contentType) { playlist = await _segmentManagerFactory.CreateAsync(parameters, cancellationToken).ConfigureAwait(false); } else { playlist = await _segmentManagerFactory.CreateAsync(parameters, contentType, cancellationToken).ConfigureAwait(false); } if (null == playlist) { throw new FileNotFoundException("Unable to create playlist"); } var segmentManagers = new[] { playlist }; return(new SegmentReaderManager(segmentManagers, _webMetadataFactory, _retryManager, _platformServices)); }
public static Task <ISegmentReaderManager> CreateAsync(this ISegmentReaderManagerFactory factory, ISegmentManagerParameters parameters, CancellationToken cancellationToken) { return(factory.CreateAsync(parameters, (ContentType)null, cancellationToken)); }
public static Task<ISegmentReaderManager> CreateAsync(this ISegmentReaderManagerFactory factory, ISegmentManagerParameters parameters, CancellationToken cancellationToken) { return factory.CreateAsync(parameters, cancellationToken); }
public virtual async Task<ISegmentManager> CreateAsync(ISegmentManagerParameters parameters, ContentType contentType, CancellationToken cancellationToken) { foreach (var url in parameters.Source) { var localUrl = url; var retry = _retryManager.CreateWebRetry(3, 333); var segmentManager = await retry.CallAsync( async () => { var webReader = _webReaderManager.CreateReader(localUrl, ContentTypes.Pls.Kind, contentType: ContentTypes.Pls); try { using (var webStream = await webReader.GetWebStreamAsync(localUrl, false, cancellationToken).ConfigureAwait(false)) { if (!webStream.IsSuccessStatusCode) { webReader.Dispose(); return null; } using (var stream = await webStream.GetStreamAsync(cancellationToken).ConfigureAwait(false)) { return await ReadPlaylistAsync(webReader, webStream.ActualUrl, stream, parameters.ContentType, parameters.StreamContentType, cancellationToken).ConfigureAwait(false); } } } catch (Exception) { webReader.Dispose(); throw; } }, cancellationToken); if (null != segmentManager) return segmentManager; } return null; }