## ZeitgeistMonitor ZeitgeistMonitor — Listens for updates to the Zeitgeist event log |

## Synopsis

    #include <zeitgeist.h>

                        ZeitgeistMonitor;
    struct              ZeitgeistMonitorClass;
    ZeitgeistMonitor *    zeitgeist_monitor_new             (ZeitgeistTimeRange *time_range,
                                                             GPtrArray *event_templates);
    ZeitgeistTimeRange *  zeitgeist_monitor_get_time_range  (ZeitgeistMonitor *self);
    GPtrArray *           zeitgeist_monitor_get_templates   (ZeitgeistMonitor *self);
    const gchar *         zeitgeist_monitor_get_path        (ZeitgeistMonitor *self);

## Object Hierarchy

      GObject
       +----ZeitgeistMonitor

## Properties

      "event-templates"          GPtrArray*            : Read / Write / Construct Only
      "time-range"               ZeitgeistTimeRange*   : Read / Write / Construct Only

## Signals

      "events-deleted"                                 : Run Last
      "events-inserted"                                : Run Last

## Description

A ZeitgeistMonitor listens for updates to the Zeitgeist event log matching a given set of templates and with timestamps in some predefined time range.

A monitor must be installed into the running Zeitgeist daemon by calling `zeitgeist_log_install_monitor()`. The monitor will not emit any of the ::events-added or ::events-deleted signals before this.

## Details

### ZeitgeistMonitor

    typedef struct _ZeitgeistMonitor ZeitgeistMonitor;

### struct ZeitgeistMonitorClass

    struct ZeitgeistMonitorClass {
      GObjectClass parent_class;

      /*< signals >*/
      void (*events_inserted)  (ZeitgeistMonitor   *self,
                                ZeitgeistTimeRange *time_range,
                                GPtrArray          *events);

      void (*events_deleted)  (ZeitgeistMonitor   *self,
                               ZeitgeistTimeRange *time_range,
                               GArray             *event_ids);
    };

### zeitgeist_monitor_new ()

    ZeitgeistMonitor *    zeitgeist_monitor_new             (ZeitgeistTimeRange *time_range,
                                                             GPtrArray *event_templates);

Create a new monitor. Before you can receive signals from the monitor you need to install it in the running Zeitgeist daemon by calling `zeitgeist_log_install_monitor()`.

`time_range` : | The monitor will only listen for events with timestamps within this time range. Note that it is legal for applications to insert events that are "in the past".
`event_templates` : | A GPtrArray of ZeitgeistEvents. Only listen for events that match any of these templates. The monitor will assume ownership of the events and the pointer array. If you want to keep a reference for yourself you must do a `g_ptr_array_ref()` on `event_templates` as well as reffing the events held by it before calling this method.
Returns : | A reference to a newly allocated monitor.

### zeitgeist_monitor_get_time_range ()

    ZeitgeistTimeRange *  zeitgeist_monitor_get_time_range  (ZeitgeistMonitor *self);

### zeitgeist_monitor_get_templates ()

    GPtrArray *           zeitgeist_monitor_get_templates   (ZeitgeistMonitor *self);

### zeitgeist_monitor_get_path ()

    const gchar *         zeitgeist_monitor_get_path        (ZeitgeistMonitor *self);

## Property Details

### The `"event-templates"` property

      "event-templates"          GPtrArray*            : Read / Write / Construct Only

Events must match at least one these templates in order to trigger the monitor

### The `"time-range"` property

      "time-range"               ZeitgeistTimeRange*   : Read / Write / Construct Only

Events must have timestamps within this timerange in order to trigger the monitor.

## Signal Details

### The `"events-deleted"` signal

    void                user_function                      (ZeitgeistMonitor   *time_range,
                                                            ZeitgeistTimeRange *event_ids,
                                                            GArray             *arg2,
                                                            gpointer            user_data)       : Run Last

Emitted when events with timestamps within the time range of this monitor has been deleted from the log. Note that the deleted events may not match the event templates for the monitor.

`time_range` : | A ZeitgeistTimeRange that specifies the minimum and maximum timestamps of the deleted events
`event_ids` : | A GArray of guint32s holding the ids of the deleted events
`user_data` : | user data set when the signal handler was connected.

### The `"events-inserted"` signal

    void                user_function                      (ZeitgeistMonitor   *time_range,
                                                            ZeitgeistTimeRange *events,
                                                            ZeitgeistResultSet *arg2,
                                                            gpointer            user_data)       : Run Last

Emitted when events matching the event templates and with timestamps within the time range of the monitor has been inserted into the log.

`time_range` : | A ZeitgeistTimeRange that specifies the minimum and maximum of the timestamps in `events`
`events` : | A ZeitgeistResultSet holding the ZeitgeistEvents that have been inserted into the log
`user_data` : | user data set when the signal handler was connected.