static unsafe IntPtr svnclient_list_handler( IntPtr baton, sbyte *path, IntPtr dirent, IntPtr @lock, sbyte *absPath, sbyte *externalParentUrl, sbyte *externalTarget, IntPtr pool) { var client = AprBaton <SvnClient> .Get(baton); if (!(client.CurrentCommandArgs is SvnListArgs args)) { return(IntPtr.Zero); } var e = new SvnListEventArgs( path, svn_dirent_t.__CreateInstance(dirent), svn_lock_t.__CreateInstance(@lock), absPath, args.CalculateRepositoryRoot(absPath), externalParentUrl, externalTarget); try { args.OnList(e); if (e.Cancel) { return(svn_error.svn_error_create((int)SvnErrorCode.SVN_ERR_CEASE_INVOCATION, null, "List receiver canceled operation").__Instance); } else { return(IntPtr.Zero); } } catch (Exception ex) { return(SvnException.CreateExceptionSvnError("List receiver", ex).__Instance); } finally { e.Detach(false); } }
public virtual void OnList(SvnListEventArgs e) { List?.Invoke(this, e); }