TrackerDataProvider

TrackerDataProvider — Provide data to be indexed

Synopsis

#include <libtracker-miner/miner.h>

struct              TrackerDataProviderIface;
TrackerEnumerator * tracker_data_provider_begin         (TrackerDataProvider *data_provider,
                                                         GFile *url,
                                                         const gchar *attributes,
                                                         TrackerDirectoryFlags flags,
                                                         GCancellable *cancellable,
                                                         GError **error);
void                tracker_data_provider_begin_async   (TrackerDataProvider *data_provider,
                                                         GFile *url,
                                                         const gchar *attributes,
                                                         TrackerDirectoryFlags flags,
                                                         gint io_priority,
                                                         GCancellable *cancellable,
                                                         GAsyncReadyCallback callback,
                                                         gpointer user_data);
TrackerEnumerator * tracker_data_provider_begin_finish  (TrackerDataProvider *data_provider,
                                                         GAsyncResult *result,
                                                         GError **error);
gboolean            tracker_data_provider_end           (TrackerDataProvider *data_provider,
                                                         TrackerEnumerator *enumerator,
                                                         GCancellable *cancellable,
                                                         GError **error);
void                tracker_data_provider_end_async     (TrackerDataProvider *data_provider,
                                                         TrackerEnumerator *enumerator,
                                                         gint io_priority,
                                                         GCancellable *cancellable,
                                                         GAsyncReadyCallback callback,
                                                         gpointer user_data);
gboolean            tracker_data_provider_end_finish    (TrackerDataProvider *data_provider,
                                                         GAsyncResult *result,
                                                         GError **error);
                    TrackerDataProvider;

Object Hierarchy

  GInterface
   +----TrackerDataProvider

Prerequisites

TrackerDataProvider requires GObject.

Description

TrackerDataProvider allows you to operate on a set of GFiles, returning a GFileInfo structure for each file enumerated (e.g. tracker_data_provider_begin() will return a TrackerEnumerator which can be used to enumerate resources provided by the TrackerDataProvider.

There is also a TrackerFileDataProvider which is an implementation of this TrackerDataProvider interface.

The TrackerMinerFS class which is a subclass to TrackerMiner takes a TrackerDataProvider property which is passed down to the TrackerCrawler created upon instantiation. This property is "data-provider".

See the TrackerEnumerator documentation for more details.

Details

struct TrackerDataProviderIface

struct TrackerDataProviderIface {
	GTypeInterface g_iface;

	/* Virtual Table */

	/* Start the data_provider for a given location, attributes and flags */
	TrackerEnumerator *   (* begin)              (TrackerDataProvider    *data_provider,
	                                              GFile                  *url,
	                                              const gchar            *attributes,
	                                              TrackerDirectoryFlags   flags,
	                                              GCancellable           *cancellable,
	                                              GError                **error);
	void                  (* begin_async)        (TrackerDataProvider    *data_provider,
	                                              GFile                  *url,
	                                              const gchar            *attributes,
	                                              TrackerDirectoryFlags   flags,
	                                              gint                    io_priority,
	                                              GCancellable           *cancellable,
	                                              GAsyncReadyCallback     callback,
	                                              gpointer                user_data);
	TrackerEnumerator *   (* begin_finish)       (TrackerDataProvider    *data_provider,
	                                              GAsyncResult           *result,
	                                              GError                **error);

	/* Close the given location */
	gboolean              (* end)                (TrackerDataProvider    *data_provider,
	                                              TrackerEnumerator      *enumerator,
	                                              GCancellable           *cancellable,
	                                              GError                **error);
	void                  (* end_async)          (TrackerDataProvider    *data_provider,
	                                              TrackerEnumerator      *enumerator,
	                                              gint                    io_priority,
	                                              GCancellable           *cancellable,
	                                              GAsyncReadyCallback     callback,
	                                              gpointer                user_data);
	gboolean              (* end_finish)         (TrackerDataProvider    *data_provider,
	                                              GAsyncResult           *result,
	                                              GError                **error);
};

Virtual methods left to implement.

GTypeInterface g_iface;

Parent interface type.

begin ()

Called when the data_provider is synchronously opening and starting the iteration of a given location.

begin_async ()

Called when the data_provider is synchronously opening and starting the iteration of a given location. Completed using begin_finish.

begin_finish ()

Called when the data_provider is completing the asynchronous operation provided by begin_async.

end ()

Called when the data_provider is synchronously closing and cleaning up the iteration of a given location.

end_async ()

Called when the data_provider is asynchronously closing and cleaning up the iteration of a given location. Completed using end_finish.

end_finish ()

Called when the data_provider is completing the asynchronous operation provided by end_async.

tracker_data_provider_begin ()

TrackerEnumerator * tracker_data_provider_begin         (TrackerDataProvider *data_provider,
                                                         GFile *url,
                                                         const gchar *attributes,
                                                         TrackerDirectoryFlags flags,
                                                         GCancellable *cancellable,
                                                         GError **error);

Creates a TrackerEnumerator to enumerate children at the URI provided by url.

The attributes value is a string that specifies the file attributes that should be gathered. It is not an error if it's not possible to read a particular requested attribute from a file - it just won't be set. attributes should be a comma-separated list of attributes or attribute wildcards. The wildcard "*" means all attributes, and a wildcard like "standard::*" means all attributes in the standard namespace. An example attribute query be "standard::*,owner::user". The standard attributes are available as defines, like G_FILE_ATTRIBUTE_STANDARD_NAME. See g_file_enumerate_children() for more details.

data_provider :

a TrackerDataProvider

url :

a GFile to enumerate

attributes :

an attribute query string

flags :

a set of TrackerDirectoryFlags

cancellable :

optional GCancellable object, NULL to ignore. [allow-none]

error :

location to store the error occurring, or NULL to ignore

Returns :

a TrackerEnumerator or NULL on failure. This must be freed with g_object_unref(). [transfer full]

Since 1.2


tracker_data_provider_begin_async ()

void                tracker_data_provider_begin_async   (TrackerDataProvider *data_provider,
                                                         GFile *url,
                                                         const gchar *attributes,
                                                         TrackerDirectoryFlags flags,
                                                         gint io_priority,
                                                         GCancellable *cancellable,
                                                         GAsyncReadyCallback callback,
                                                         gpointer user_data);

Precisely the same operation as tracker_data_provider_begin() is performing, but asynchronously.

When all i/o for the operation is finished the callback will be called with the requested information.

See the documentation of TrackerDataProvider for information about the order of returned files.

In case of a partial error the callback will be called with any succeeding items and no error, and on the next request the error will be reported. If a request is cancelled the callback will be called with G_IO_ERROR_CANCELLED.

During an async request no other sync and async calls are allowed, and will result in G_IO_ERROR_PENDING errors.

Any outstanding i/o request with higher priority (lower numerical value) will be executed before an outstanding request with lower priority. Default priority is G_PRIORITY_DEFAULT.

data_provider :

a TrackerDataProvider.

url :

a GFile to enumerate

attributes :

an attribute query string

flags :

a set of TrackerDirectoryFlags

io_priority :

the [I/O priority][io-priority] of the request

cancellable :

optional GCancellable object, NULL to ignore. [allow-none]

callback :

a GAsyncReadyCallback to call when the request is satisfied. [scope async]

user_data :

the data to pass to callback function. [closure]

Since 1.2


tracker_data_provider_begin_finish ()

TrackerEnumerator * tracker_data_provider_begin_finish  (TrackerDataProvider *data_provider,
                                                         GAsyncResult *result,
                                                         GError **error);

Finishes the asynchronous operation started with tracker_data_provider_begin_async().

data_provider :

a TrackerDataProvider.

result :

a GAsyncResult.

error :

a GError location to store the error occurring, or NULL to ignore.

Returns :

a TrackerEnumerator or NULL on failure. This must be freed with g_object_unref(). [transfer full]

Since 1.2


tracker_data_provider_end ()

gboolean            tracker_data_provider_end           (TrackerDataProvider *data_provider,
                                                         TrackerEnumerator *enumerator,
                                                         GCancellable *cancellable,
                                                         GError **error);

Closes any caches or operations related to creating the TrackerEnumerator to enumerate data at url.

The attributes value is a string that specifies the file attributes that should be gathered. It is not an error if it's not possible to read a particular requested attribute from a file - it just won't be set. attributes should be a comma-separated list of attributes or attribute wildcards. The wildcard "*" means all attributes, and a wildcard like "standard::*" means all attributes in the standard namespace. An example attribute query be "standard::*,owner::user". The standard attributes are available as defines, like G_FILE_ATTRIBUTE_STANDARD_NAME. See g_file_enumerate_children() for more details.

data_provider :

a TrackerDataProvider

enumerator :

a TrackerEnumerator originally created by tracker_data_provider_begin().

cancellable :

optional GCancellable object, NULL to ignore. [allow-none]

error :

location to store the error occurring, or NULL to ignore

Returns :

TRUE on success, otherwise FALSE and error is set.

Since 1.2


tracker_data_provider_end_async ()

void                tracker_data_provider_end_async     (TrackerDataProvider *data_provider,
                                                         TrackerEnumerator *enumerator,
                                                         gint io_priority,
                                                         GCancellable *cancellable,
                                                         GAsyncReadyCallback callback,
                                                         gpointer user_data);

Precisely the same operation as tracker_data_provider_end() is performing, but asynchronously.

When all i/o for the operation is finished the callback will be called with the requested information.

See the documentation of TrackerDataProvider for information about the order of returned files.

In case of a partial error the callback will be called with any succeeding items and no error, and on the next request the error will be reported. If a request is cancelled the callback will be called with G_IO_ERROR_CANCELLED.

During an async request no other sync and async calls are allowed, and will result in G_IO_ERROR_PENDING errors.

Any outstanding i/o request with higher priority (lower numerical value) will be executed before an outstanding request with lower priority. Default priority is G_PRIORITY_DEFAULT.

data_provider :

a TrackerDataProvider.

enumerator :

a TrackerEnumerator originally created by tracker_data_provider_begin().

io_priority :

the [I/O priority][io-priority] of the request

cancellable :

optional GCancellable object, NULL to ignore. [allow-none]

callback :

a GAsyncReadyCallback to call when the request is satisfied. [scope async]

user_data :

the data to pass to callback function. [closure]

Since 1.2


tracker_data_provider_end_finish ()

gboolean            tracker_data_provider_end_finish    (TrackerDataProvider *data_provider,
                                                         GAsyncResult *result,
                                                         GError **error);

Finishes the asynchronous operation started with tracker_data_provider_end_async().

data_provider :

a TrackerDataProvider.

result :

a GAsyncResult.

error :

a GError location to store the error occurring, or NULL to ignore.

Returns :

TRUE on success, otherwise FALSE and error is set.

Since 1.2


TrackerDataProvider

typedef struct _TrackerDataProvider TrackerDataProvider;

An interface to enumerate URIs and feed the data to Tracker.