Changeset 36

Show
Ignore:
Timestamp:
06/30/04 00:30:56
Author:
DenisG
Message:

[SubversionSharp] Add SvnClient?.Status and Log with related Delegate

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/SubversionSharp/dev/src/Svn.cs

    r33 r36  
    180180                                                             IntPtr pool); 
    181181                                                              
     182        internal delegate void svn_wc_status_func_t(IntPtr baton, IntPtr path, IntPtr status); 
     183         
     184        internal delegate IntPtr svn_log_message_receiver_t(IntPtr baton, IntPtr changed_paths,  
     185                                                            uint revision, IntPtr author,  
     186                                                            IntPtr date, IntPtr message,  
     187                                                            IntPtr pool); 
     188                                                              
    182189        [DllImport("svn_client-1", CharSet=CharSet.Ansi)] static extern 
    183190        internal IntPtr svn_client_checkout(out uint result_rev, string URL,  
     
    220227        internal IntPtr svn_client_status(out uint result_rev,  
    221228                                          string path, IntPtr revision, 
    222                                           IntPtr status_func, IntPtr status_baton,  
     229                                          svn_wc_status_func_t status_func, IntPtr status_baton,  
    223230                                          int descend, int get_all, int update, int no_ignore,  
    224231                                          IntPtr ctx, IntPtr pool); 
     
    227234        internal IntPtr svn_client_log(IntPtr targets, IntPtr start, IntPtr end, 
    228235                                       int discover_changed_paths, int strict_node_history,  
    229                                        IntPtr receiver, IntPtr receiver_baton,  
     236                                       svn_log_message_receiver_t receiver, IntPtr receiver_baton,  
    230237                                       IntPtr ctx, IntPtr pool); 
    231238     
  • trunk/SubversionSharp/dev/src/SvnClient.cs

    r35 r36  
    2020                                              AprArray commitItems, IntPtr baton, 
    2121                                              AprPool pool); 
    22                                                 
     22 
     23        public delegate SvnError LogMessageReceiver(IntPtr baton, AprHash changed_paths,  
     24                                                    int revision, AprString author, 
     25                                                    AprString date, AprString message, 
     26                                                    AprPool pool);                                              
     27                                                                                                                                                
    2328        public static int Checkout(string url, string path,  
    2429                                   SvnOptRevision revision,  
     
    127132            return(commitInfo); 
    128133        } 
     134         
     135        public static int Status(string path, 
     136                                 SvnOptRevision revision, 
     137                                 SvnWcStatus.Func statusFunc, IntPtr statusBaton, 
     138                                 bool descend, bool getAll, bool update, bool noIgnore, 
     139                                 SvnClientContext ctx, AprPool pool) 
     140        { 
     141            uint rev; 
     142            SvnDelegate statusDelegate = new SvnDelegate(statusFunc); 
     143            Debug.Write(String.Format("svn_client_status({0},{1},{2},{3},{4:X},{5},{6},{7},{8},{9})...",path,revision,statusFunc.Method.Name,statusBaton.ToInt32(),(descend) ? 1 : 0,(getAll) ? 1 : 0,(update) ? 1 : 0,(noIgnore) ? 1 : 0,ctx,pool)); 
     144            SvnError err = Svn.svn_client_status(out rev, path, revision, 
     145                                                 (Svn.svn_wc_status_func_t) statusDelegate.Wrapper, 
     146                                                 statusBaton, 
     147                                                 (descend) ? 1 : 0, (getAll) ? 1 : 0, 
     148                                                 (update) ? 1 : 0, (noIgnore) ? 1 : 0, 
     149                                                 ctx, pool); 
     150            if( !err.IsNoError ) 
     151                throw new SvnException(err); 
     152            Debug.WriteLine(String.Format("Done({0})",rev)); 
     153            if( update ) 
     154                return(unchecked((int)rev)); 
     155            else 
     156                return(-1); 
     157        } 
     158         
     159        public static void Log(AprArray targets, 
     160                               SvnOptRevision start, SvnOptRevision end, 
     161                               bool discoverChangedPaths, bool strictNodeHistory, 
     162                               LogMessageReceiver receiver, IntPtr baton, 
     163                               SvnClientContext ctx, AprPool pool) 
     164        { 
     165            SvnDelegate receiverDelegate = new SvnDelegate(receiver); 
     166            Debug.WriteLine(String.Format("svn_client_log({0},{1},{2},{3},{4},{5},{6},{7},{8})",targets,start,end,(discoverChangedPaths ? 1 :0),(strictNodeHistory ? 1 :0),receiver.Method.Name,baton,ctx,pool)); 
     167            SvnError err = Svn.svn_client_log(targets, start, end, 
     168                                              (discoverChangedPaths ? 1 :0), 
     169                                              (strictNodeHistory ? 1 :0), 
     170                                              (Svn.svn_log_message_receiver_t)receiverDelegate.Wrapper, 
     171                                              baton, 
     172                                              ctx, pool); 
     173            if( !err.IsNoError ) 
     174                throw new SvnException(err); 
     175        } 
    129176    } 
    130177} 
  • trunk/SubversionSharp/dev/src/SvnDelegate.cs

    r33 r36  
    7575            SvnWcNotify.Func func = mFunc as SvnWcNotify.Func; 
    7676            try { 
    77                 Debug.WriteLine(String.Format("[Callback:{0}]SvnNotifyFunc({1:X},{2},{3},{4},{5},{6},{7},{8})",func.Method.Name,baton,new AprString(path),(SvnWcNotify.Action) action,(Svn.NodeKind) kind,new AprString(mime_type),(SvnWcNotify.State) content_state,(SvnWcNotify.State) prop_state,unchecked((int) revision))); 
     77                Debug.WriteLine(String.Format("[Callback:{0}]SvnWcNotifyFunc({1:X},{2},{3},{4},{5},{6},{7},{8})",func.Method.Name,baton,new AprString(path),(SvnWcNotify.Action) action,(Svn.NodeKind) kind,new AprString(mime_type),(SvnWcNotify.State) content_state,(SvnWcNotify.State) prop_state,unchecked((int) revision))); 
    7878                func(baton, new AprString(path), 
    7979                     (SvnWcNotify.Action) action, (Svn.NodeKind) kind,  
     
    8181                     (SvnWcNotify.State) prop_state, unchecked((int) revision)); 
    8282            } 
    83             catch( Exception e ) { 
     83            catch( Exception ) { 
    8484                return; 
    8585            } 
     
    148148        } 
    149149 
    150          
     150 
     151        // svn_wc_status_func_t Wrapper      
     152        public SvnDelegate(SvnWcStatus.Func func) 
     153        { 
     154            mFunc = func; 
     155            mWrapperFunc = new Svn.svn_wc_status_func_t(SvnWcStatusFuncWrapper); 
     156        } 
     157         
     158        private void SvnWcStatusFuncWrapper(IntPtr baton, IntPtr path, IntPtr status) 
     159        { 
     160            SvnWcStatus.Func func = mFunc as SvnWcStatus.Func; 
     161            try { 
     162                Debug.WriteLine(String.Format("[Callback:{0}]SvnWcStatusFunc({1:X},{2},{3})",func.Method.Name,baton,new AprString(path),new SvnWcStatus(status))); 
     163                func(baton, new AprString(path), (SvnWcStatus) status); 
     164            } 
     165            catch( Exception ) { 
     166                return; 
     167            } 
     168        } 
     169 
     170         
     171        // svn_log_message_receiver_t Wrapper        
     172        public SvnDelegate(SvnClient.LogMessageReceiver func) 
     173        { 
     174            mFunc = func; 
     175            mWrapperFunc = new Svn.svn_log_message_receiver_t(SvnLogMessageReceiverWrapper); 
     176        } 
     177         
     178        //[CLSCompliant(false))] 
     179        private IntPtr SvnLogMessageReceiverWrapper(IntPtr baton, IntPtr changed_paths,  
     180                                                    uint revision, IntPtr author, 
     181                                                    IntPtr date, IntPtr message, 
     182                                                    IntPtr pool) 
     183        { 
     184            SvnError err = SvnError.NoError; 
     185            SvnClient.LogMessageReceiver func = mFunc as SvnClient.LogMessageReceiver; 
     186            try { 
     187                Debug.Write(String.Format("[Callback:{0}]SvnLogMessageReceiver({1:X},{2},{3},{4},{5},{6},{7})...",func.Method.Name,baton,new AprHash(changed_paths),unchecked((int)revision),new AprString(author),new AprString(date),new AprString(message),new AprPool(pool))); 
     188                err = func(baton, new AprHash(changed_paths), 
     189                           unchecked((int)revision), new AprString(author), 
     190                           new AprString(date), new AprString(message), 
     191                           new AprPool(pool)); 
     192                Debug.WriteLine((err.IsNoError) ? "Return(NoError)" : String.Format("Return({0})",err.Message)); 
     193            } 
     194            catch( SvnException e ) { 
     195                err = SvnError.Create(e.AprErr, SvnError.NoError, e.Message); 
     196            } 
     197            catch( Exception e ) { 
     198                err = SvnError.Create(215000, SvnError.NoError, e.Message); 
     199            } 
     200            return(err);         
     201        }                                               
     202         
     203                 
     204                                 
    151205        // svn_auth_simple_prompt_func_t Wrapper 
    152206        public SvnDelegate(SvnAuthProviderObject.SimplePrompt func) 
  • trunk/SubversionSharp/dev/src/SvnWcStatus.cs

    r33 r36  
    1818    public unsafe class SvnWcStatus 
    1919    { 
     20        public delegate void Func(IntPtr baton, AprString path, SvnWcStatus status); 
     21         
    2022        public enum Kind { 
    2123            None = 1,