Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
 protected internal virtual void OnStatus(SvnStatusEventArgs e)
 {
     Status?.Invoke(this, e);
 }