using System; using LibGit2Sharp.Handlers; namespace LibGit2Sharp.Core { internal class PackbuilderCallbacks { private readonly PackBuilderProgressHandler onPackBuilderProgress; /// S /// Constructor to set up the native callback given managed delegate. /// /// The delegate that the git_packbuilder_progress will call. internal PackbuilderCallbacks(PackBuilderProgressHandler onPackBuilderProgress) { this.onPackBuilderProgress = onPackBuilderProgress; } /// /// Generates a delegate that matches the native git_packbuilder_progress function's signature and wraps the delegate. /// /// A delegate method with a signature that matches git_transfer_progress_callback. internal NativeMethods.git_packbuilder_progress GenerateCallback() { if (onPackBuilderProgress == null) { return null; } return new PackbuilderCallbacks(onPackBuilderProgress).OnGitPackBuilderProgress; } private int OnGitPackBuilderProgress(int stage, uint current, uint total, IntPtr payload) { return Proxy.ConvertResultToCancelFlag(onPackBuilderProgress((PackBuilderStage)stage, (int)current, (int)total)); } } }