Example #1
0
        public async Task StartAsync()
        {
            this.ThrowIfDisposed();
            this._cancellationToken.ThrowIfCancellationRequested();
            SignalTask oldReadTask = (SignalTask)null;
            CancellationTokenSource cancellationTokenSource = (CancellationTokenSource)null;
            bool   lockTaken = false;
            object obj;

            try
            {
                Monitor.Enter(obj = this._segmentLock, ref lockTaken);
                if (!this._isRunning)
                {
                    if (this._abortTokenSource.IsCancellationRequested)
                    {
                        cancellationTokenSource = this._abortTokenSource;
                        this._abortTokenSource  = CancellationTokenSource.CreateLinkedTokenSource(this._cancellationToken);
                        oldReadTask             = this._readTask;
                        this._readTask          = new SignalTask(new Func <Task>(this.ReadSubList), this._abortTokenSource.Token);
                    }
                    this._isRunning = true;
                }
                else
                {
                    goto label_15;
                }
            }
            finally
            {
                if (lockTaken)
                {
                    Monitor.Exit(obj);
                }
            }
            await HlsPlaylistSegmentManager.CleanupReader(oldReadTask, cancellationTokenSource).ConfigureAwait(false);

            if (this._programStream.Segments != null && this._programStream.Segments.Count > 0)
            {
                this.UpdatePlaylist();
            }
            ISegment segment = await AsyncEnumerableExtensions.FirstOrDefaultAsync <ISegment>(this.Playlist).ConfigureAwait(false);

            if (null == segment)
            {
                Debug.WriteLine("HlsPlaylistSegmentManager.StartAsync() no segments found");
                throw new FileNotFoundException("Unable to find the first segment");
            }
            this.ContentType = await this._programStream.GetContentTypeAsync(this._cancellationToken).ConfigureAwait(false);

            this.WebReader = WebReaderExtensions.CreateChild(this._programStream.WebReader, (Uri)null, ContentKind.AnyMedia, this.ContentType);
            label_15 :;
        }
Example #2
0
        public void Method()
        {
            var a0 = new OptimizedAsyncEnumerable <TestType>().FirstAsync();
            var b0 = new OptimizedAsyncEnumerable <TestType>().FirstOrDefaultAsync();
            var c0 = AsyncEnumerableExtensions.FirstAsync(new OptimizedAsyncEnumerable <TestType>());
            var d0 = AsyncEnumerableExtensions.FirstOrDefaultAsync(new OptimizedAsyncEnumerable <TestType>());

            var a1 = new TestType().SingleAsync();
            var b1 = new TestType().SingleOrDefaultAsync();
            var c1 = NotAsyncEnumerableExtensions.SingleAsync(new TestType());
            var d1 = NotAsyncEnumerableExtensions.SingleOrDefaultAsync(new TestType());

            var c2 = SingleAsync(new TestType());
            var d2 = SingleOrDefaultAsync(new TestType());
        }
 public ValueTask <TestType> Test_SingleOrDefaultAsync_Method()
 => AsyncEnumerableExtensions.FirstOrDefaultAsync(new OptimizedAsyncEnumerable <TestType>());