Monitoring

Monitoring — watch files for changes, and get called back if they do

Synopsis




typedef     GnomeVFSMonitorHandle;
enum        GnomeVFSMonitorType;
enum        GnomeVFSMonitorEventType;
void        (*GnomeVFSMonitorCallback)      (GnomeVFSMonitorHandle *handle,
                                             const gchar *monitor_uri,
                                             const gchar *info_uri,
                                             GnomeVFSMonitorEventType event_type,
                                             gpointer user_data);
GnomeVFSResult gnome_vfs_monitor_add        (GnomeVFSMonitorHandle **handle,
                                             const gchar *text_uri,
                                             GnomeVFSMonitorType monitor_type,
                                             GnomeVFSMonitorCallback callback,
                                             gpointer user_data);
GnomeVFSResult gnome_vfs_monitor_cancel     (GnomeVFSMonitorHandle *handle);
void        gnome_vfs_monitor_callback      (GnomeVFSMethodHandle *method_handle,
                                             GnomeVFSURI *info_uri,
                                             GnomeVFSMonitorEventType event_type);

Description

Details

GnomeVFSMonitorHandle

typedef struct GnomeVFSMonitorHandle GnomeVFSMonitorHandle;

a handle representing a file or directory monitor that was registered using gnome_vfs_monitor_add() and that can be cancelled using gnome_vfs_monitor_cancel().


enum GnomeVFSMonitorType

typedef enum {
  GNOME_VFS_MONITOR_FILE,
  GNOME_VFS_MONITOR_DIRECTORY
} GnomeVFSMonitorType;

Type of resources that can be monitored.

GNOME_VFS_MONITOR_FILE the monitor is registered for a single file.
GNOME_VFS_MONITOR_DIRECTORY the monitor is registered for all files in a directory, and the directory itself.

enum GnomeVFSMonitorEventType

typedef enum {
  GNOME_VFS_MONITOR_EVENT_CHANGED,
  GNOME_VFS_MONITOR_EVENT_DELETED,
  GNOME_VFS_MONITOR_EVENT_STARTEXECUTING,
  GNOME_VFS_MONITOR_EVENT_STOPEXECUTING,
  GNOME_VFS_MONITOR_EVENT_CREATED,
  GNOME_VFS_MONITOR_EVENT_METADATA_CHANGED
} GnomeVFSMonitorEventType;

Types of events that can be monitored.

GNOME_VFS_MONITOR_EVENT_CHANGED file data changed (FAM, inotify).
GNOME_VFS_MONITOR_EVENT_DELETED file deleted event (FAM, inotify).
GNOME_VFS_MONITOR_EVENT_STARTEXECUTING file was executed (FAM only).
GNOME_VFS_MONITOR_EVENT_STOPEXECUTING executed file isn't executed anymore (FAM only).
GNOME_VFS_MONITOR_EVENT_CREATED file created event (FAM, inotify).
GNOME_VFS_MONITOR_EVENT_METADATA_CHANGED file metadata changed (inotify only).

GnomeVFSMonitorCallback ()

void        (*GnomeVFSMonitorCallback)      (GnomeVFSMonitorHandle *handle,
                                             const gchar *monitor_uri,
                                             const gchar *info_uri,
                                             GnomeVFSMonitorEventType event_type,
                                             gpointer user_data);

Function called when a monitor detects a change.

handle : the handle of the monitor that created the event
monitor_uri : the URI of the monitor that was triggered
info_uri : the URI of the actual file this event is concerned with (this can be different from monitor_uri if it was a directory monitor)
event_type : what happened to info_uri
user_data : user data passed to gnome_vfs_monitor_add() when the monitor was created

gnome_vfs_monitor_add ()

GnomeVFSResult gnome_vfs_monitor_add        (GnomeVFSMonitorHandle **handle,
                                             const gchar *text_uri,
                                             GnomeVFSMonitorType monitor_type,
                                             GnomeVFSMonitorCallback callback,
                                             gpointer user_data);

Watch the file or directory at text_uri for changes (or the creation/deletion of the file) and call callback when there is a change. If a directory monitor is added, callback is notified when any file in the directory changes.

handle : after the call, handle will be a pointer to an operation handle.
text_uri : string representing the uri to monitor.
monitor_type : add a directory or file monitor.
callback : function to call when the monitor is tripped.
user_data : data to pass to callback.
Returns : an integer representing the result of the operation.

gnome_vfs_monitor_cancel ()

GnomeVFSResult gnome_vfs_monitor_cancel     (GnomeVFSMonitorHandle *handle);

Cancel the monitor pointed to be handle.

handle : handle of the monitor to cancel.
Returns : an integer representing the result of the operation.

gnome_vfs_monitor_callback ()

void        gnome_vfs_monitor_callback      (GnomeVFSMethodHandle *method_handle,
                                             GnomeVFSURI *info_uri,
                                             GnomeVFSMonitorEventType event_type);

gnome_vfs_monitor_callback() is used by GnomeVFSMethods to indicate that a particular resource changed, and will issue the emission of the GnomeVFSMonitorCallback registered using gnome_vfs_monitor_add().

method_handle : Method-specific monitor handle obtained through gnome_vfs_monitor_add().
info_uri : URI that triggered the callback.
event_type : The event obtained for info_uri.