static unsafe IntPtr svnclient_status_handler(IntPtr baton, sbyte *path, IntPtr status_ptr, IntPtr scratch_pool) { var client = AprBaton <SvnClient> .Get(baton); using var aprPool = new AprPool(scratch_pool, false); if (!(client.CurrentCommandArgs is SvnStatusArgs args)) { return(IntPtr.Zero); } var status = svn_client_status_t.__CreateInstance(status_ptr); var e = new SvnStatusEventArgs(path, status, client, aprPool); try { args.OnStatus(e); if (e.Cancel) { return(svn_error.svn_error_create((int)SvnErrorCode.SVN_ERR_CEASE_INVOCATION, null, "Status receiver canceled operation").__Instance); } else { return(IntPtr.Zero); } } catch (Exception ex) { return(SvnException.CreateExceptionSvnError("Status receiver", ex).__Instance); } finally { e.Detach(false); } }
protected internal virtual void OnStatus(SvnStatusEventArgs e) { Status?.Invoke(this, e); }