private void BeginGetChunk_Completed(IAsyncResult asyncResult)
        {
            var        downloadRequest = (DownloadRequest)asyncResult.AsyncState;
            MediaTrack track           = downloadRequest.MediaTrack;

            ChunkResult chunk = track.TrackInfo.EndGetChunk(asyncResult);

            NotifyRequestSuccessful(downloadRequest);
            DownloadCompleted(this, downloadRequest.MediaTrack, downloadRequest.ChunkTimestamp, chunk);
        }
예제 #2
0
        private void ChunkDownloadManager_ChunkDownloadCompleted(ChunkDownloadManager downloadManager, TrackInfo track, TimeSpan timestamp, ChunkResult result)
        {
            var dataChunk = track.Stream.ChunkList.First(i => i.TimeStamp == timestamp);

            if (result.Result == ChunkResult.ChunkResultState.Succeeded)
            {
                OnDownloadStreamDataCompleted(track, dataChunk, result.ChunkData, track.Stream);
                if (DownloadStreamDataCompleted != null)
                {
                    DownloadStreamDataCompleted(this, track, dataChunk, result.ChunkData, track.Stream);
                }
            }
            else
            {
                if (DownloadStreamDataFailed != null)
                {
                    DownloadStreamDataFailed(this, track, dataChunk, result.Error);
                }
            }
        }
        private void ChunkDownloadManager_ChunkDownloadCompleted(ChunkDownloadManager downloadManager, TrackInfo track, TimeSpan timestamp, ChunkResult result)
        {
            var dataChunk = track.Stream.ChunkList.First(i => i.TimeStamp == timestamp);

            if (result.Result == ChunkResult.ChunkResultState.Succeeded)
            {
                OnDownloadStreamDataCompleted(track, dataChunk, result.ChunkData, track.Stream);
                if (DownloadStreamDataCompleted != null) DownloadStreamDataCompleted(this, track, dataChunk, result.ChunkData, track.Stream);
            }
            else
            {
                if (DownloadStreamDataFailed != null) DownloadStreamDataFailed(this, track, dataChunk, result.Error);
            }
        }
        private void ChunkDownloadManager_ChunkDownloadCompleted(ChunkDownloadManager downloadManager, MediaTrack track,
                                                                 TimeSpan timestamp, ChunkResult result)
        {
            try
            {
                var dataChunk = track.ParentStream.DataChunks.First(i => i.Timestamp == timestamp);

                if (result.Result == ChunkResult.ChunkResultState.Succeeded)
                {
                    var downloadResult = new StreamDownloadResult
                                             {
                                                 DataChunk = dataChunk,
                                                 Stream = result.ChunkData,
                                                 Type = track.ParentStream.Type
                                             };

                    DownloadStreamDataCompleted.IfNotNull(i => i(this, track, downloadResult));
                }
                else
                {
                    Exception err = result.Error ?? new DownloadStreamDataTimeOutException();

                    DownloadStreamDataFailed.IfNotNull(i => i(this, track, dataChunk, err));
                }
            }
            catch (Exception ex)
            {
                DownloadStreamDataFailed.IfNotNull(i => i(this, track, null, ex));
            }
        }