1 /* 2 * Copyright (C) 2008, Nokia <ivan.frade@nokia.com> 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20 #ifndef __LIBTRACKER_DB_MANAGER_H__ 21 #define __LIBTRACKER_DB_MANAGER_H__ 22 23 #include <glib-object.h> 24 25 #include "tracker-db-interface.h" 26 27 G_BEGIN_DECLS 28 29 #if !defined (__LIBTRACKER_DATA_INSIDE__) && !defined (TRACKER_COMPILATION) 30 #error "only <libtracker-data/tracker-data.h> must be included directly." 31 #endif 32 33 #define TRACKER_DB_CACHE_SIZE_DEFAULT 250 34 #define TRACKER_DB_CACHE_SIZE_UPDATE 2000 35 36 typedef enum { 37 TRACKER_DB_MANAGER_FORCE_REINDEX = 1 << 1, 38 TRACKER_DB_MANAGER_REMOVE_ALL = 1 << 2, 39 TRACKER_DB_MANAGER_READONLY = 1 << 3, 40 TRACKER_DB_MANAGER_DO_NOT_CHECK_ONTOLOGY = 1 << 4, 41 TRACKER_DB_MANAGER_ENABLE_MUTEXES = 1 << 5, 42 } TrackerDBManagerFlags; 43 44 typedef struct _TrackerDBManager TrackerDBManager; 45 46 TrackerDBManager *tracker_db_manager_new (TrackerDBManagerFlags flags, 47 GFile *cache_location, 48 GFile *data_location, 49 gboolean *first_time, 50 gboolean restoring_backup, 51 gboolean shared_cache, 52 guint select_cache_size, 53 guint update_cache_size, 54 TrackerBusyCallback busy_callback, 55 gpointer busy_user_data, 56 const gchar *busy_operation, 57 GObject *iface_data, 58 gpointer vtab_data, 59 GError **error); 60 void tracker_db_manager_free (TrackerDBManager *db_manager); 61 void tracker_db_manager_remove_all (TrackerDBManager *db_manager); 62 void tracker_db_manager_optimize (TrackerDBManager *db_manager); 63 const gchar * tracker_db_manager_get_file (TrackerDBManager *db_manager); 64 TrackerDBInterface *tracker_db_manager_get_db_interface (TrackerDBManager *db_manager); 65 TrackerDBInterface *tracker_db_manager_get_writable_db_interface (TrackerDBManager *db_manager); 66 67 void tracker_db_manager_ensure_locations (TrackerDBManager *db_manager, 68 GFile *cache_location, 69 GFile *data_location); 70 gboolean tracker_db_manager_has_enough_space (TrackerDBManager *db_manager); 71 void tracker_db_manager_create_version_file (TrackerDBManager *db_manager); 72 void tracker_db_manager_remove_version_file (TrackerDBManager *db_manager); 73 74 TrackerDBManagerFlags 75 tracker_db_manager_get_flags (TrackerDBManager *db_manager, 76 guint *select_cache_size, 77 guint *update_cache_size); 78 79 gboolean tracker_db_manager_get_first_index_done (TrackerDBManager *db_manager); 80 guint64 tracker_db_manager_get_last_crawl_done (TrackerDBManager *db_manager); 81 gboolean tracker_db_manager_get_need_mtime_check (TrackerDBManager *db_manager); 82 83 void tracker_db_manager_set_first_index_done (TrackerDBManager *db_manager, 84 gboolean done); 85 void tracker_db_manager_set_last_crawl_done (TrackerDBManager *db_manager, 86 gboolean done); 87 void tracker_db_manager_set_need_mtime_check (TrackerDBManager *db_manager, 88 gboolean needed); 89 90 gboolean tracker_db_manager_locale_changed (TrackerDBManager *db_manager, 91 GError **error); 92 void tracker_db_manager_set_current_locale (TrackerDBManager *db_manager); 93 94 gboolean tracker_db_manager_get_tokenizer_changed (TrackerDBManager *db_manager); 95 void tracker_db_manager_tokenizer_update (TrackerDBManager *db_manager); 96 97 void tracker_db_manager_check_perform_vacuum (TrackerDBManager *db_manager); 98 99 G_END_DECLS 100 101 #endif /* __LIBTRACKER_DB_MANAGER_H__ */ 102