Top |
Functions
GQuark | tracker_miner_fs_error_quark () |
TrackerIndexingTree * | tracker_miner_fs_get_indexing_tree () |
TrackerDataProvider * | tracker_miner_fs_get_data_provider () |
gdouble | tracker_miner_fs_get_throttle () |
void | tracker_miner_fs_set_throttle () |
void | tracker_miner_fs_check_file () |
void | tracker_miner_fs_notify_finish () |
const gchar * | tracker_miner_fs_get_urn () |
gchar * | tracker_miner_fs_query_urn () |
gboolean | tracker_miner_fs_has_items_to_process () |
Properties
TrackerDataProvider * | data-provider | Read / Write / Construct Only |
guint | processing-pool-ready-limit | Read / Write / Construct |
guint | processing-pool-wait-limit | Read / Write / Construct |
GFile * | root | Read / Write / Construct Only |
gdouble | throttle | Read / Write |
Signals
void | finished | Run Last |
void | finished-root | Run Last |
gchar* | move-file | Run Last |
gboolean | process-file | Run Last |
gboolean | process-file-attributes | Run Last |
gchar* | remove-children | Run Last |
gchar* | remove-file | Run Last |
Types and Values
struct | TrackerMinerFS |
TrackerMinerFSClass | |
enum | TrackerMinerFSError |
enum | TrackerMinerFSEventType |
Description
TrackerMinerFS is an abstract base class for miners that collect data from a filesystem where parent/child relationships need to be inserted into the database correctly with queue management.
All the filesystem crawling and monitoring is abstracted away, leaving to implementations the decisions of what directories/files should it process, and the actual data extraction.
Example creating a TrackerMinerFS with our own file system root and data provider.
First create our class and base it on TrackerMinerFS:
1 2 3 |
G_DEFINE_TYPE_WITH_CODE (MyMinerFiles, my_miner_files, TRACKER_TYPE_MINER_FS, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, my_miner_files_initable_iface_init)) |
Later in our class creation function, we are supplying the
arguments we want. In this case, the 'root' is a GFile pointing to
a root URI location (for example 'file:///') and 'data_provider' is a
TrackerDataProvider used to enumerate 'root' and return children it
finds. If 'data_provider' is NULL
(the default), then a
TrackerFileDataProvider is created automatically.
1 2 3 4 5 6 7 8 9 10 |
// Note that only 'name' is mandatory miner = g_initable_new (MY_TYPE_MINER_FILES, NULL, error, "name", "MyMinerFiles", "root", root, "data-provider", data_provider, "processing-pool-wait-limit", 10, "processing-pool-ready-limit", 100, NULL); |
Functions
tracker_miner_fs_error_quark ()
GQuark
tracker_miner_fs_error_quark (void
);
Gives the caller the GQuark used to identify TrackerMinerFS errors in GError structures. The GQuark is used as the domain for the error.
Since: 1.2.
tracker_miner_fs_get_indexing_tree ()
TrackerIndexingTree *
tracker_miner_fs_get_indexing_tree (TrackerMinerFS *fs
);
Returns the TrackerIndexingTree which determines
what files/directories are indexed by fs
tracker_miner_fs_get_data_provider ()
TrackerDataProvider *
tracker_miner_fs_get_data_provider (TrackerMinerFS *fs
);
Returns the TrackerDataProvider implementation, which is being used to supply GFile and GFileInfo content to Tracker.
Since: 1.2
tracker_miner_fs_get_throttle ()
gdouble
tracker_miner_fs_get_throttle (TrackerMinerFS *fs
);
Gets the current throttle value, see
tracker_miner_fs_set_throttle()
for more details.
Since: 0.8
tracker_miner_fs_set_throttle ()
void tracker_miner_fs_set_throttle (TrackerMinerFS *fs
,gdouble throttle
);
Tells the filesystem miner to throttle its operations. A value of
0.0 means no throttling at all, so the miner will perform
operations at full speed, 1.0 is the slowest value. With a value of
1.0, the fs
is typically waiting one full second before handling
the next batch of queued items to be processed.
Since: 0.8
tracker_miner_fs_check_file ()
void tracker_miner_fs_check_file (TrackerMinerFS *fs
,GFile *file
,gint priority
,gboolean check_parents
);
Tells the filesystem miner to check and index a file at
a given priority, this file must be part of the usual
crawling directories of TrackerMinerFS. See
tracker_miner_fs_directory_add()
.
Parameters
fs |
||
file |
GFile for the file to check |
|
priority |
the priority of the check task |
|
check_parents |
whether to check parents and eligibility or not |
Since: 0.10
tracker_miner_fs_notify_finish ()
void tracker_miner_fs_notify_finish (TrackerMinerFS *fs
,GTask *task
,const gchar *sparql
,GError *error
);
Notifies fs
that all processing on file
has been finished, if any error
happened during file data processing, it should be passed in error
, else
sparql
should contain correct SPARQL representing the operation in
particular.
This function is expected to be called in reaction to all TrackerMinerFS signals
Parameters
fs |
||
task |
a GTask obtained in a TrackerMinerFS signal/vmethod |
|
sparql |
Resulting sparql for the given operation, or |
[nullable] |
error |
a GError with the error that happened during processing, or |
tracker_miner_fs_get_urn ()
const gchar * tracker_miner_fs_get_urn (TrackerMinerFS *fs
,GFile *file
);
If the item exists in the store, this function retrieves the URN for a GFile being currently processed.
If file
is not being currently processed by fs
, or doesn't
exist in the store yet, NULL
will be returned.
Since: 0.8
tracker_miner_fs_query_urn ()
gchar * tracker_miner_fs_query_urn (TrackerMinerFS *fs
,GFile *file
);
If the item exists in the store, this function retrieves the URN of the given GFile
If file
doesn't exist in the store yet, NULL
will be returned.
Returns
A newly allocated string with the URN containing the data associated
to file
, or NULL
.
[transfer full]
Since: 0.10
tracker_miner_fs_has_items_to_process ()
gboolean
tracker_miner_fs_has_items_to_process (TrackerMinerFS *fs
);
The fs
keeps many priority queus for content it is processing.
This function returns TRUE
if the sum of all (or any) priority
queues is more than 0. This includes items deleted, created,
updated, moved or being written back.
Since: 0.10
Types and Values
struct TrackerMinerFS
struct TrackerMinerFS;
Abstract miner implementation to get data from the filesystem.
TrackerMinerFSClass
typedef struct { TrackerMinerClass parent; gboolean (* process_file) (TrackerMinerFS *fs, GFile *file, GTask *task); void (* finished) (TrackerMinerFS *fs, gdouble elapsed, gint directories_found, gint directories_ignored, gint files_found, gint files_ignored); gboolean (* process_file_attributes) (TrackerMinerFS *fs, GFile *file, GTask *task); void (* finished_root) (TrackerMinerFS *fs, GFile *root, gint directories_found, gint directories_ignored, gint files_found, gint files_ignored); gchar * (* remove_file) (TrackerMinerFS *fs, GFile *file); gchar * (* remove_children) (TrackerMinerFS *fs, GFile *file); gchar * (* move_file) (TrackerMinerFS *fs, GFile *source, GFile *dest, gboolean recursive); gboolean (* filter_event) (TrackerMinerFS *fs, TrackerMinerFSEventType type, GFile *file, GFile *source_file); /* <Private> */ gpointer padding[20]; } TrackerMinerFSClass;
Prototype for the abstract class, process_file
must be implemented
in the deriving class in order to actually extract data.
Members
TrackerMinerClass |
parent object class |
|
Called when the metadata associated to a file is requested. |
||
Called when all processing has been performed. |
||
Called when the metadata associated with a file's attributes changes, for example, the mtime. |
||
Called when all resources on a particular root URI have been processed. |
||
Reserved for future API improvements. |
enum TrackerMinerFSError
Possible errors returned when calling creating new objects based on the TrackerMinerFS type and other APIs available with this class.
Since: 1.2.
Property Details
The “data-provider”
property
“data-provider” TrackerDataProvider *
Data provider populating data, e.g. like GFileEnumerator.
Flags: Read / Write / Construct Only
The “processing-pool-ready-limit”
property
“processing-pool-ready-limit” guint
Maximum number of SPARQL updates that can be merged in a single connection to the store.
Flags: Read / Write / Construct
Allowed values: >= 1
Default value: 1
The “processing-pool-wait-limit”
property
“processing-pool-wait-limit” guint
Maximum number of files that can be concurrently processed by the upper layer.
Flags: Read / Write / Construct
Allowed values: >= 1
Default value: 1
The “root”
property
“root” GFile *
Top level URI for our indexing tree and file notify clases.
Flags: Read / Write / Construct Only
Signal Details
The “finished”
signal
void user_function (TrackerMinerFS *miner_fs, gdouble elapsed, guint directories_found, guint directories_ignored, guint files_found, guint files_ignored, gpointer user_data)
The ::finished signal is emitted when miner_fs
has finished
all pending processing.
Parameters
miner_fs |
the TrackerMinerFS |
|
elapsed |
elapsed time since mining was started |
|
directories_found |
number of directories found |
|
directories_ignored |
number of ignored directories |
|
files_found |
number of files found |
|
files_ignored |
number of ignored files |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 0.8
The “finished-root”
signal
void user_function (TrackerMinerFS *miner_fs, GFile *file, gpointer user_data)
The ::finished-crawl signal is emitted when miner_fs
has
finished finding all resources that need to be indexed
with the root location of file
. At this point, it's likely
many are still in the queue to be added to the database,
but this gives some indication that a location is
processed.
Parameters
miner_fs |
the TrackerMinerFS |
|
file |
a GFile |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 1.2
The “move-file”
signal
gchar* user_function (TrackerMinerFS *trackerminerfs, GFile *arg1, GFile *arg2, gboolean arg3, gpointer user_data)
Flags: Run Last
The “process-file”
signal
gboolean user_function (TrackerMinerFS *miner_fs, GFile *file, GTask *builder, gpointer user_data)
The ::process-file signal is emitted whenever a file should be processed, and it's metadata extracted.
builder
is the TrackerSparqlBuilder where all sparql updates
to be performed for file
will be appended.
This signal allows both synchronous and asynchronous extraction,
in the synchronous case cancellable
can be safely ignored. In
either case, on successful metadata extraction, implementations
must call tracker_miner_fs_notify_finish()
to indicate that
processing has finished on file
, so the miner can execute
the SPARQL updates and continue processing other files.
Parameters
miner_fs |
the TrackerMinerFS |
|
file |
a GFile |
|
builder |
||
cancellable |
a GCancellable |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 0.8
The “process-file-attributes”
signal
gboolean user_function (TrackerMinerFS *miner_fs, GFile *file, GTask *builder, gpointer user_data)
The ::process-file-attributes signal is emitted whenever a file should be processed, but only the attribute-related metadata extracted.
builder
is the TrackerSparqlBuilder where all sparql updates
to be performed for file
will be appended. For the properties being
updated, the DELETE statements should be included as well.
This signal allows both synchronous and asynchronous extraction,
in the synchronous case cancellable
can be safely ignored. In
either case, on successful metadata extraction, implementations
must call tracker_miner_fs_notify_finish()
to indicate that
processing has finished on file
, so the miner can execute
the SPARQL updates and continue processing other files.
Parameters
miner_fs |
the TrackerMinerFS |
|
file |
a GFile |
|
builder |
||
cancellable |
a GCancellable |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 0.10
The “remove-children”
signal
gchar* user_function (TrackerMinerFS *trackerminerfs, GFile *arg1, gpointer user_data)
Flags: Run Last
The “remove-file”
signal
gchar* user_function (TrackerMinerFS *miner_fs, GFile *file, gpointer user_data)
The ::remove-file signal will be emitted on files that need removal according to the miner configuration (either the files themselves are deleted, or the directory/contents no longer need inspection according to miner configuration and their location.
This operation is always assumed to be recursive, the children_only
argument will be TRUE
if for any reason the topmost directory needs
to stay (e.g. moved from a recursively indexed directory tree to a
non-recursively indexed location).
The builder
argument can be used to provide additional SPARQL
deletes and updates necessary around the deletion of those items. If
the return value of this signal is TRUE
, builder
is expected to
contain all relevant deletes for this operation.
If the return value of this signal is FALSE
, the miner will apply
its default behavior, which is deleting all triples that correspond
to the affected URIs.
Parameters
miner_fs |
the TrackerMinerFS |
|
file |
a GFile |
|
children_only |
TRUE if only the children of |
|
builder |
||
user_data |
user data set when the signal handler was connected. |
Returns
TRUE
if builder
contains all the necessary operations to
delete the affected resources, FALSE
to let the miner
implicitly handle the deletion.
Flags: Run Last
Since: 1.8