示例#1
0
        private async void DownloadSingle(int index)
        {
            if (index >= taskModel.CompleteCount)
            {
                taskModel.Reset();
                return;
            }
            var file    = files[index].file;
            var request = new MediaFileDownloadRequest
            {
                index       = file.fileIndex,
                count       = 1,
                dataSize    = -1,
                offSet      = 0,
                segSubIndex = 0,
                subIndex    = 0,
                type        = MediaRequestType.ORIGIN
            };

            var task        = MediaTask.FromRequest(request);
            var storageFile = await KnownFolders.VideosLibrary.CreateFileAsync(file.fileName, CreationCollisionOption.GenerateUniqueName);

            var stream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);

            var outputStream = stream.GetOutputStreamAt(0);
            var fileWriter   = new DataWriter(outputStream);

            task.OnDataReqResponse += (sender, req, data, speed) =>
            {
                Dispatcher.RunAsync(CoreDispatcherPriority.Low, async() =>
                {
                    taskModel.cachedByte += data.Length;
                    taskModel.MBSpeed     = (speed / 8388608);
                    fileWriter.WriteBytes(data);
                    await fileWriter.StoreAsync();
                    await outputStream.FlushAsync();
                });
            };

            task.OnRequestTearDown += (sender, retCode, res) =>
            {
                Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
                {
                    taskModel.Sync = String.Format("DownloadMediaFile index {0} complete {1}", res?.dataReq.index, retCode);
                    //this.DownloadSingle(this.taskModel.runTasks.Count);
                });
            };
            taskModel.runTasks.Add(task);
            taskManager.PushBack(task);
        }
示例#2
0
文件: StopMsg.cs 项目: zaga-ruyi/sdk
        public async Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
        {
            iprot.IncrementRecursionDepth();
            try
            {
                TField field;
                await iprot.ReadStructBeginAsync(cancellationToken);

                while (true)
                {
                    field = await iprot.ReadFieldBeginAsync(cancellationToken);

                    if (field.Type == TType.Stop)
                    {
                        break;
                    }

                    switch (field.ID)
                    {
                    case 1:
                        if (field.Type == TType.I32)
                        {
                            Name = (MediaTask)await iprot.ReadI32Async(cancellationToken);
                        }
                        else
                        {
                            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
                        }
                        break;

                    default:
                        await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);

                        break;
                    }

                    await iprot.ReadFieldEndAsync(cancellationToken);
                }

                await iprot.ReadStructEndAsync(cancellationToken);
            }
            finally
            {
                iprot.DecrementRecursionDepth();
            }
        }
示例#3
0
        /// <summary>
        /// Developer should get file list first, in case developer gets the file index for download
        /// </summary>
        private async void Reload()
        {
            var result = await cameraHandler.GetCameraWorkModeAsync();

            if (result.value == null)
            {
                return;
            }
            var mode = result.value?.value;

            if (mode != CameraWorkMode.TRANSCODE && mode != CameraWorkMode.PLAYBACK)
            {
                return;
            }
            this.files.Clear();
            var fileListTask = MediaTask.FromRequest(new MediaFileListRequest
            {
                count     = -1,
                index     = 1,
                subType   = MediaRequestType.ORIGIN,
                isAllList = true,
                location  = MediaFileListLocation.SD_CARD,
            });

            fileListTask.OnListReqResponse += async(fileSender, files) =>
            {
                taskModel.Sync = String.Format("LaunchFileDataTask get files : {0}", files.Count);
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    files.ForEach(obj => this.files.Add(new MediaItem(obj)));
                });
            };
            fileListTask.OnRequestTearDown += (fileSender, retCode, response) =>
            {
                if (retCode == SDKError.NO_ERROR)
                {
                    return;
                }
                taskModel.Sync = String.Format("LaunchFileDataTask get files : {0}. Switch Mode or try again", retCode);
            };
            taskManager.PushBack(fileListTask);
        }
示例#4
0
文件: StopMsg.cs 项目: subor/sdk
        public void Read(TProtocol iprot)
        {
            iprot.IncrementRecursionDepth();
            try
            {
                TField field;
                iprot.ReadStructBegin();
                while (true)
                {
                    field = iprot.ReadFieldBegin();
                    if (field.Type == TType.Stop)
                    {
                        break;
                    }
                    switch (field.ID)
                    {
                    case 1:
                        if (field.Type == TType.I32)
                        {
                            Name = (MediaTask)iprot.ReadI32();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    default:
                        TProtocolUtil.Skip(iprot, field.Type);
                        break;
                    }
                    iprot.ReadFieldEnd();
                }
                iprot.ReadStructEnd();
            }
            finally
            {
                iprot.DecrementRecursionDepth();
            }
        }