Main Page   Modules   Data Structures   File List   Data Fields  

notification callback handling


Data Structures

struct  svn_wc_notify_t
 Structure used in the svn_wc_notify_func2_t function. More...


Typedefs

typedef enum svn_wc_notify_action_t svn_wc_notify_action_t
 The type of action occurring.

typedef enum svn_wc_notify_state_t svn_wc_notify_state_t
 The type of notification that is occurring.

typedef enum svn_wc_notify_lock_state_t svn_wc_notify_lock_state_t
 What happened to a lock during an operation. More...

typedef svn_wc_notify_t svn_wc_notify_t
 Structure used in the svn_wc_notify_func2_t function. More...

typedef void(* svn_wc_notify_func2_t )(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool)
 Notify the world that notify->action has happened to notify->path. More...

typedef void(* svn_wc_notify_func_t )(void *baton, const char *path, svn_wc_notify_action_t action, svn_node_kind_t kind, const char *mime_type, svn_wc_notify_state_t content_state, svn_wc_notify_state_t prop_state, svn_revnum_t revision)
 Similar to svn_wc_notify_func2_t, but takes the information as arguments instead of struct fields. More...


Functions

svn_wc_notify_tsvn_wc_create_notify (const char *path, svn_wc_notify_action_t action, apr_pool_t *pool)
 Allocate an svn_wc_notify_t structure in pool, initialize and return it. More...

svn_wc_notify_tsvn_wc_dup_notify (const svn_wc_notify_t *notify, apr_pool_t *pool)
 Return a deep copy of notify, allocated in pool. More...


Detailed Description

In many cases, the WC library will scan a working copy and make changes. The caller usually wants to know when each of these changes has been made, so that it can display some kind of notification to the user.

These notifications have a standard callback function type, which takes the path of the file that was affected, and a caller- supplied baton.

Note that the callback is a 'void' return -- this is a simple reporting mechanism, rather than an opportunity for the caller to alter the operation of the WC library.

Note also that some of the actions are used across several different Subversion commands. For example, the update actions are also used for checkouts, switches, and merges.


Typedef Documentation

typedef void(* svn_wc_notify_func2_t)(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool)
 

Notify the world that notify->action has happened to notify->path.

Recommendation: callers of svn_wc_notify_func2_t should avoid invoking it multiple times on the same path within a given operation, and implementations should not bother checking for such duplicate calls. For example, in an update, the caller should not invoke the notify func on receiving a prop change and then again on receiving a text change. Instead, wait until all changes have been received, and then invoke the notify func once (from within an svn_delta_editor_t's close_file(), for example), passing the appropriate notify->content_state and notify->prop_state flags.

Since:
New in 1.2.

Definition at line 745 of file svn_wc.h.

typedef void(* svn_wc_notify_func_t)(void *baton, const char *path, svn_wc_notify_action_t action, svn_node_kind_t kind, const char *mime_type, svn_wc_notify_state_t content_state, svn_wc_notify_state_t prop_state, svn_revnum_t revision)
 

Similar to svn_wc_notify_func2_t, but takes the information as arguments instead of struct fields.

Deprecated:
Provided for backward compatibility with the 1.1 API.

Definition at line 755 of file svn_wc.h.

typedef enum svn_wc_notify_lock_state_t svn_wc_notify_lock_state_t
 

What happened to a lock during an operation.

Since:
New in 1.2.

typedef struct svn_wc_notify_t svn_wc_notify_t
 

Structure used in the svn_wc_notify_func2_t function.

path is either absolute or relative to the current working directory (i.e., not relative to an anchor). action describes what happened to path.

kind, content_state, prop_state and lock_state are from after action, not before. lock_state reflects the addition or removal of a lock token in the working copy.

If mime_type is non-null, it indicates the mime-type of path. It is always NULL for directories.

If action is svn_wc_notify_update_completed, revision is the target revision of the update, or SVN_INVALID_REVNUM if not available. If action is svn_wc_notify_blame_revision, revision is the processed revision. In all other cases, revision is SVN_INVALID_REVNUM.

For an action of svn_wc_notify_locked, lock is the lock structure received from the repository. For other actions, it is NULL.

err is NULL, except when action is svn_wc_notify_failed_lock or svn_wc_notify_failed_unlock, in which case it points to an error describing the reason for the failure.

Note that if action is svn_wc_notify_update, then path has already been installed, so it is legitimate for an implementation of svn_wc_notify_func2_t to examine path in the working copy.

Note:
The purpose of the kind, mime_type, content_state, and prop_state fields is to provide "for free" information that an implementation is likely to want, and which it would otherwise be forced to deduce via expensive operations such as reading entries and properties. However, if the caller does not have this information, it will simply pass the corresponding `*_unknown' values, and it is up to the implementation how to handle that (i.e., whether to attempt deduction, or just to punt and give a less informative notification).
Note:
Callers of notification functions should use svn_wc_create_notify() to create structures of this type to allow for extensibility.
Since:
New in 1.2.


Function Documentation

svn_wc_notify_t* svn_wc_create_notify const char *    path,
svn_wc_notify_action_t    action,
apr_pool_t *    pool
 

Allocate an svn_wc_notify_t structure in pool, initialize and return it.

Set the path field of the created struct to path, and action to action. Set all other fields to their _unknown, NULL or invalid value, respectively.

Since:
New in 1.2.

svn_wc_notify_t* svn_wc_dup_notify const svn_wc_notify_t   notify,
apr_pool_t *    pool
 

Return a deep copy of notify, allocated in pool.

Since:
New in 1.2.


Generated on Wed Jun 7 11:02:16 2006 for Subversion by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002