public CallbackStatus UpdateProgress_Callback(ProgressMsg msg, object info, object progctx) { CallbackTested tested = progctx as CallbackTested; Assert.IsNotNull(tested); switch (msg) { case ProgressMsg.UPDATE_BEGIN_COMMAND: case ProgressMsg.UPDATE_END_COMMAND: { ProgressInfo_Update m = (ProgressInfo_Update)info; Assert.IsNotNull(m); tested.Set(); UpdateCommand cmd = m.Command; switch (cmd.Op) { case UpdateOp.ADD: { var add = cmd.Add; Console.WriteLine($"ADD [{add.FsSourcePath}] -> [{add.WimTargetPath}]"); } break; case UpdateOp.DELETE: { var del = cmd.Delete; Console.WriteLine($"DELETE [{del.WimPath}]"); } break; case UpdateOp.RENAME: { var ren = cmd.Rename; Console.WriteLine($"RENAME [{ren.WimSourcePath}] -> [{ren.WimTargetPath}]"); } break; } } break; default: break; } return(CallbackStatus.CONTINUE); }
public static CallbackStatus UpdateProgressCallback(ProgressMsg msg, object info, object progctx) { CallbackTested tested = progctx as CallbackTested; Assert.IsNotNull(tested); switch (msg) { case ProgressMsg.UpdateBeginCommand: case ProgressMsg.UpdateEndCommand: { UpdateProgress m = (UpdateProgress)info; Assert.IsNotNull(m); tested.Set(); UpdateCommand cmd = m.Command; Console.WriteLine($"Commands = {m.CompletedCommands}/{m.TotalCommands}"); switch (cmd.Op) { case UpdateOp.Add: { AddCommand add = cmd.Add; Console.WriteLine($"ADD [{add.FsSourcePath}] -> [{add.WimTargetPath}]"); } break; case UpdateOp.Delete: { DeleteCommand del = cmd.Delete; Console.WriteLine($"DELETE [{del.WimPath}]"); } break; case UpdateOp.Rename: { RenameCommand ren = cmd.Rename; Console.WriteLine($"RENAME [{ren.WimSourcePath}] -> [{ren.WimTargetPath}]"); } break; } } break; } return(CallbackStatus.Continue); }
private static CallbackStatus UpdatedStatusCallback(ProgressMsg msg, object info, object progctx, IDownloadProgress progressObserver) { if (info is ProgressInfo_Extract m) { ulong percentComplete = 0; switch (msg) { case ProgressMsg.EXTRACT_FILE_STRUCTURE: if (0 < m.EndFileCount) { percentComplete = m.CurrentFileCount * 10 / m.EndFileCount; } break; case ProgressMsg.EXTRACT_STREAMS: if (0 < m.TotalBytes) { percentComplete = 10 + m.CompletedBytes * 80 / m.TotalBytes; } break; case ProgressMsg.EXTRACT_METADATA: if (0 < m.EndFileCount) { percentComplete = 90 + m.CurrentFileCount * 10 / m.EndFileCount; } break; } progressObserver.Percentage.OnNext((double)percentComplete / 100); } return(CallbackStatus.CONTINUE); }
private CallbackStatus NativeCallback(ProgressMsg msgType, IntPtr info, IntPtr progctx) { object pInfo = null; if (_callback == null) { return(CallbackStatus.Continue); } switch (msgType) { case ProgressMsg.WriteStreams: pInfo = Marshal.PtrToStructure <WriteStreamsProgress>(info); break; case ProgressMsg.ScanBegin: case ProgressMsg.ScanDEntry: case ProgressMsg.ScanEnd: pInfo = Marshal.PtrToStructure <ScanProgress>(info); break; case ProgressMsg.ExtractSpwmPartBegin: case ProgressMsg.ExtractImageBegin: case ProgressMsg.ExtractTreeBegin: case ProgressMsg.ExtractFileStructure: case ProgressMsg.ExtractStreams: case ProgressMsg.ExtractMetadata: case ProgressMsg.ExtractTreeEnd: case ProgressMsg.ExtractImageEnd: pInfo = Marshal.PtrToStructure <ExtractProgress>(info); break; case ProgressMsg.Rename: pInfo = Marshal.PtrToStructure <RenameProgress>(info); break; case ProgressMsg.UpdateBeginCommand: case ProgressMsg.UpdateEndCommand: UpdateProgressBase _base = Marshal.PtrToStructure <UpdateProgressBase>(info); pInfo = _base.ToManaged(); break; case ProgressMsg.VerifyIntegrity: case ProgressMsg.CalcIntegrity: pInfo = Marshal.PtrToStructure <IntegrityProgress>(info); break; case ProgressMsg.SplitBeginPart: case ProgressMsg.SplitEndPart: pInfo = Marshal.PtrToStructure <SplitProgress>(info); break; case ProgressMsg.ReplaceFileInWim: pInfo = Marshal.PtrToStructure <ReplaceProgress>(info); break; case ProgressMsg.WimBootExclude: pInfo = Marshal.PtrToStructure <WimBootExcludeProgress>(info); break; case ProgressMsg.UnmountBegin: pInfo = Marshal.PtrToStructure <UnmountProgress>(info); break; case ProgressMsg.DoneWithFile: pInfo = Marshal.PtrToStructure <DoneWithFileProgress>(info); break; case ProgressMsg.BeginVerifyImage: case ProgressMsg.EndVerifyImage: pInfo = Marshal.PtrToStructure <VerifyImageProgress>(info); break; case ProgressMsg.VerifyStreams: pInfo = Marshal.PtrToStructure <VerifyStreamsProgress>(info); break; case ProgressMsg.TestFileExclusion: pInfo = Marshal.PtrToStructure <TestFileExclusionProgress>(info); break; case ProgressMsg.HandleError: pInfo = Marshal.PtrToStructure <HandleErrorProgress>(info); break; } return(_callback(msgType, pInfo, _userData)); }
private CallbackStatus NativeCallback(ProgressMsg msgType, IntPtr info, IntPtr progctx) { object pInfo = null; if (_callback != null) { switch (msgType) { case ProgressMsg.WRITE_STREAMS: pInfo = (ProgressInfo_WriteStreams)Marshal.PtrToStructure(info, typeof(ProgressInfo_WriteStreams)); break; case ProgressMsg.SCAN_BEGIN: case ProgressMsg.SCAN_DENTRY: case ProgressMsg.SCAN_END: pInfo = (ProgressInfo_Scan)Marshal.PtrToStructure(info, typeof(ProgressInfo_Scan)); break; case ProgressMsg.EXTRACT_SPWM_PART_BEGIN: case ProgressMsg.EXTRACT_IMAGE_BEGIN: case ProgressMsg.EXTRACT_TREE_BEGIN: case ProgressMsg.EXTRACT_FILE_STRUCTURE: case ProgressMsg.EXTRACT_STREAMS: case ProgressMsg.EXTRACT_METADATA: case ProgressMsg.EXTRACT_TREE_END: case ProgressMsg.EXTRACT_IMAGE_END: pInfo = (ProgressInfo_Extract)Marshal.PtrToStructure(info, typeof(ProgressInfo_Extract)); break; case ProgressMsg.RENAME: pInfo = (ProgressInfo_Rename)Marshal.PtrToStructure(info, typeof(ProgressInfo_Rename)); break; case ProgressMsg.UPDATE_BEGIN_COMMAND: case ProgressMsg.UPDATE_END_COMMAND: ProgressInfo_UpdateBase _base = (ProgressInfo_UpdateBase)Marshal.PtrToStructure(info, typeof(ProgressInfo_UpdateBase)); pInfo = _base.ToManaged(); break; case ProgressMsg.VERIFY_INTEGRITY: case ProgressMsg.CALC_INTEGRITY: pInfo = (ProgressInfo_Integrity)Marshal.PtrToStructure(info, typeof(ProgressInfo_Integrity)); break; case ProgressMsg.SPLIT_BEGIN_PART: case ProgressMsg.SPLIT_END_PART: pInfo = (ProgressInfo_Split)Marshal.PtrToStructure(info, typeof(ProgressInfo_Split)); break; case ProgressMsg.REPLACE_FILE_IN_WIM: pInfo = (ProgressInfo_Replace)Marshal.PtrToStructure(info, typeof(ProgressInfo_Replace)); break; case ProgressMsg.WIMBOOT_EXCLUDE: pInfo = (ProgressInfo_WimBootExclude)Marshal.PtrToStructure(info, typeof(ProgressInfo_WimBootExclude)); break; case ProgressMsg.UNMOUNT_BEGIN: pInfo = (ProgressInfo_Unmount)Marshal.PtrToStructure(info, typeof(ProgressInfo_Unmount)); break; case ProgressMsg.DONE_WITH_FILE: pInfo = (ProgressInfo_DoneWithFile)Marshal.PtrToStructure(info, typeof(ProgressInfo_DoneWithFile)); break; case ProgressMsg.BEGIN_VERIFY_IMAGE: case ProgressMsg.END_VERIFY_IMAGE: pInfo = (ProgressInfo_VerifyImage)Marshal.PtrToStructure(info, typeof(ProgressInfo_VerifyImage)); break; case ProgressMsg.VERIFY_STREAMS: pInfo = (ProgressInfo_VerifyStreams)Marshal.PtrToStructure(info, typeof(ProgressInfo_VerifyStreams)); break; case ProgressMsg.TEST_FILE_EXCLUSION: pInfo = (ProgressInfo_TestFileExclusion)Marshal.PtrToStructure(info, typeof(ProgressInfo_TestFileExclusion)); break; case ProgressMsg.HANDLE_ERROR: pInfo = (ProgressInfo_HandleError)Marshal.PtrToStructure(info, typeof(ProgressInfo_HandleError)); break; } return(_callback(msgType, pInfo, _userData)); } else { return(CallbackStatus.CONTINUE); } }