示例#1
0
        /// <summary>
        /// 根据Task生成一个Mirror
        /// </summary>
        private Mirror GetNewMirror(SPFTask task)
        {
            Mirror mirror = new Mirror();

            mirror.Block      = SourcePosition.CurrentSelectedDisk.CurrentSelectedItem;
            mirror.Source     = task.Device;
            mirror.Target     = TargetPosition.DirPath;
            mirror.TargetFile = DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss") + ".bin";
            EnumDeviceType deviceType = task.Device.DeviceType;

            if (deviceType == EnumDeviceType.Chip)
            {
                mirror.Type = EnumMirror.Chip;
            }
            else if (deviceType == EnumDeviceType.SIM)
            {
                mirror.Type = EnumMirror.SIM;
            }
            else if (deviceType == EnumDeviceType.SDCard)
            {
                mirror.Type = EnumMirror.SDCard;
            }
            else
            {
                mirror.Type = EnumMirror.Device;
            }
            mirror.MirrorFlag = MirrorFlag.NewMirror;
            return(mirror);
        }
示例#2
0
 public MirrorControlerBox(SPFTask task, Mirror mirror, IAsyncTaskProgress asyn)
 {
     _task            = task;
     _mirror          = mirror;
     _asyn            = asyn;
     _mirrorControler = new MirrorControler();
 }
示例#3
0
        /// <summary>
        /// 执行数据镜像
        /// </summary>
        /// <param name="task">任务</param>
        /// <param name="mirror">镜像源信息</param>
        /// <param name="asyn">异步通知</param>
        public void Execute(SPFTask task, Mirror mirror, IAsyncTaskProgress asyn)
        {
            //生成保存目录
            FileHelper.CreateExitsDirectorySafe(mirror.Target);

            //镜像
            MirrorService = SingleWrapperHelper <MirrorServiceFactory> .GetInstance().GetInstance(mirror);

            MirrorService.Execute(mirror, asyn);

            if (FileHelper.IsValid(mirror.Local))
            {//镜像成功
                mirror.VerifyCode = FileHelper.MD5FromFileUpper(mirror.Local);

                //生成MD5文件
                var md5File = mirror.Local.TrimEnd(SPFTask.EXT_MIRROR) + SPFTask.EXT_VERIFYCODE_FILE;
                FileHelper.CreateFile(md5File, mirror.VerifyCode, Encoding.UTF8);

                //生成设备信息文件
                var deviceFile = mirror.Local.TrimEnd(SPFTask.EXT_MIRROR) + SPFTask.EXT_DEVICE;
                Serializer.SerializeToBinary(task.Device, deviceFile);

                task.TaskMirrorFilePath = mirror.Local;
                task.VerifyCodes.Add(new FileVerifyCode()
                {
                    FilePath = mirror.Local, VerifyCode = mirror.VerifyCode
                });
            }
        }
示例#4
0
        private void DeviceMonitor_OnDeviceConnected(IDevice dev, bool isOnline)
        {
            _mirrorViewModel.SourcePosition.RefreshPartitions(dev);

            SPFTask task = new SPFTask();

            task.Name   = "TestName";
            task.Device = (Device)dev;
            _mirrorViewModel.Initialize(task);
        }
示例#5
0
        /// <summary>
        /// 数据提取控制器构造器
        /// </summary>
        /// <param name="task">当前任务实例</param>
        /// <param name="source">提取对象</param>
        /// <param name="extractItems">提取项集合</param>
        /// <param name="asyn">异步通知</param>
        /// <param name="workMode">工作模式</param>
        public DataExtractControler(SPFTask task, Pump source, ExtractItemCollection extractItems, IAsyncProgress asyn, EnumDataExtractWorkMode workMode)
        {
            OwnerTask    = task;
            SourcePump   = source;
            Asyn         = asyn;
            WorkMode     = workMode;
            ExtractItems = extractItems.GetAllCheckedExtractItem();

            MainWorkThread = new SingleThread();
        }
示例#6
0
        public void Initialize(SPFTask task)
        {
            IAsyncTaskProgress asyncProgress = new MyDefaultSingleTaskReporter();

            Mirror mirror = GetNewMirror(task);

            SourcePosition.MirrorControlerBox mirrorControler = new SourcePosition.MirrorControlerBox(task, mirror, asyncProgress);

            SourcePosition.SetMirrorControler(mirrorControler);

            //设置滚动条进度
            asyncProgress.ProgressChanged += (o, e) =>
            {
                ProgressPosition.FinishedSize = (int)e.Progress;
            };
            asyncProgress.Terminated += (o, e) =>
            {
                if (e.IsCompleted)
                {
                    ProgressPosition.FinishedSize = ProgressPosition.TotalSize;
                }
            };
        }