diff options
Diffstat (limited to 'src/miners/apps/tracker-main.c')
-rw-r--r-- | src/miners/apps/tracker-main.c | 316 |
1 files changed, 0 insertions, 316 deletions
diff --git a/src/miners/apps/tracker-main.c b/src/miners/apps/tracker-main.c deleted file mode 100644 index 8f0a55668..000000000 --- a/src/miners/apps/tracker-main.c +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Copyright (C) 2014, Lanedo GmbH. <martyn@lanedo.com> - - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "config.h" - -#include <stdlib.h> -#include <locale.h> -#include <errno.h> - -#include <glib.h> -#include <glib-unix.h> -#include <glib-object.h> -#include <glib/gi18n.h> - -#include <libtracker-common/tracker-common.h> - -#include <libtracker-miner/tracker-miner.h> - -#include "tracker-miner-applications.h" - -#define ABOUT \ - "Tracker " PACKAGE_VERSION "\n" - -#define LICENSE \ - "This program is free software and comes without any warranty.\n" \ - "It is licensed under version 2 or later of the General Public " \ - "License which can be viewed at:\n" \ - "\n" \ - " http://www.gnu.org/licenses/gpl.txt\n" - -#define DBUS_NAME_SUFFIX "Miner.Applications" -#define DBUS_PATH "/org/freedesktop/Tracker1/Miner/Applications" - -static GMainLoop *main_loop; - -static gint verbosity = -1; -static gboolean no_daemon; -static gboolean version; -static gchar *domain_ontology_name = NULL; - -static GOptionEntry entries[] = { - { "verbosity", 'v', 0, - G_OPTION_ARG_INT, &verbosity, - N_("Logging, 0 = errors only, " - "1 = minimal, 2 = detailed and 3 = debug (default=0)"), - NULL }, - { "no-daemon", 'n', 0, - G_OPTION_ARG_NONE, &no_daemon, - N_("Runs until all applications are indexed and then exits"), - NULL }, - { "domain-ontology", 'd', 0, - G_OPTION_ARG_STRING, &domain_ontology_name, - N_("Runs for an specific domain ontology"), - NULL }, - { "version", 'V', 0, - G_OPTION_ARG_NONE, &version, - N_("Displays version information"), - NULL }, - { NULL } -}; - -static gboolean -signal_handler (gpointer user_data) -{ - int signo = GPOINTER_TO_INT (user_data); - - static gboolean in_loop = FALSE; - - /* Die if we get re-entrant signals handler calls */ - if (in_loop) { - _exit (EXIT_FAILURE); - } - - switch (signo) { - case SIGTERM: - case SIGINT: - in_loop = TRUE; - g_main_loop_quit (main_loop); - - /* Fall through */ - default: - if (g_strsignal (signo)) { - g_print ("\n"); - g_print ("Received signal:%d->'%s'\n", - signo, - g_strsignal (signo)); - } - break; - } - - return G_SOURCE_CONTINUE; -} - -static void -initialize_signal_handler (void) -{ -#ifndef G_OS_WIN32 - g_unix_signal_add (SIGTERM, signal_handler, GINT_TO_POINTER (SIGTERM)); - g_unix_signal_add (SIGINT, signal_handler, GINT_TO_POINTER (SIGINT)); -#endif /* G_OS_WIN32 */ -} - -static void -initialize_priority_and_scheduling (TrackerSchedIdle sched_idle, - gboolean first_time_index) -{ - /* Set CPU priority */ - if (sched_idle == TRACKER_SCHED_IDLE_ALWAYS || - (sched_idle == TRACKER_SCHED_IDLE_FIRST_INDEX && first_time_index)) { - tracker_sched_idle (); - } - - /* Set disk IO priority and scheduling */ - tracker_ioprio_init (); - - /* Set process priority: - * The nice() function uses attribute "warn_unused_result" and - * so complains if we do not check its returned value. But it - * seems that since glibc 2.2.4, nice() can return -1 on a - * successful call so we have to check value of errno too. - * Stupid... - */ - - g_message ("Setting priority nice level to 19"); - - errno = 0; - if (nice (19) == -1 && errno != 0) { - const gchar *str = g_strerror (errno); - - g_message ("Couldn't set nice value to 19, %s", - str ? str : "no error given"); - } -} - -static void -miner_finished_cb (TrackerMinerFS *fs, - gdouble seconds_elapsed, - guint total_directories_found, - guint total_directories_ignored, - guint total_files_found, - guint total_files_ignored, - gpointer user_data) -{ - g_info ("Finished mining in seconds:%f, total directories:%d, total files:%d", - seconds_elapsed, - total_directories_found, - total_files_found); - - if (no_daemon && main_loop) { - g_main_loop_quit (main_loop); - } -} - -static void -on_domain_vanished (GDBusConnection *connection, - const gchar *name, - gpointer user_data) -{ - GMainLoop *loop = user_data; - g_main_loop_quit (loop); -} - -int -main (gint argc, gchar *argv[]) -{ - TrackerMiner *miner_applications; - GOptionContext *context; - GError *error = NULL; - gchar *log_filename = NULL; - GDBusConnection *connection; - TrackerMinerProxy *proxy; - TrackerDomainOntology *domain_ontology; - gchar *dbus_name; - - main_loop = NULL; - - setlocale (LC_ALL, ""); - - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); - bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); - textdomain (GETTEXT_PACKAGE); - - /* Set timezone info */ - tzset (); - - /* Translators: this messagge will apper immediately after the - * usage string - Usage: COMMAND <THIS_MESSAGE> - */ - context = g_option_context_new (_("— start the application data miner")); - - g_option_context_add_main_entries (context, entries, NULL); - g_option_context_parse (context, &argc, &argv, &error); - g_option_context_free (context); - - if (error) { - g_printerr ("%s\n", error->message); - g_error_free (error); - return EXIT_FAILURE; - } - - if (version) { - g_print ("\n" ABOUT "\n" LICENSE "\n"); - return EXIT_SUCCESS; - } - - tracker_sparql_connection_set_domain (domain_ontology_name); - - domain_ontology = tracker_domain_ontology_new (domain_ontology_name, NULL, &error); - if (error) { - g_critical ("Could not load domain ontology '%s': %s", - domain_ontology_name, error->message); - g_error_free (error); - return EXIT_FAILURE; - } - - connection = g_bus_get_sync (TRACKER_IPC_BUS, NULL, &error); - if (error) { - g_critical ("Could not create DBus connection: %s\n", - error->message); - g_error_free (error); - return EXIT_FAILURE; - } - - tracker_log_init (verbosity, &log_filename); - if (log_filename) { - g_message ("Using log file:'%s'", log_filename); - g_free (log_filename); - } - - /* This makes sure we don't steal all the system's resources */ - initialize_priority_and_scheduling (TRACKER_SCHED_IDLE_ALWAYS, FALSE); - - main_loop = g_main_loop_new (NULL, FALSE); - - if (domain_ontology && domain_ontology_name) { - g_bus_watch_name_on_connection (connection, domain_ontology_name, - G_BUS_NAME_WATCHER_FLAGS_NONE, - NULL, on_domain_vanished, - main_loop, NULL); - } - - g_message ("Checking if we're running as a daemon:"); - g_message (" %s %s", - no_daemon ? "No" : "Yes", - no_daemon ? "(forced by command line)" : ""); - - /* Create miner for applications */ - miner_applications = tracker_miner_applications_new (&error); - if (!miner_applications) { - g_critical ("Couldn't create new applications miner, '%s'", - error ? error->message : "unknown error"); - tracker_log_shutdown (); - return EXIT_FAILURE; - } - - proxy = tracker_miner_proxy_new (miner_applications, connection, DBUS_PATH, NULL, &error); - if (!proxy) { - g_critical ("Couldn't create miner DBus proxy: %s", error->message); - g_error_free (error); - tracker_log_shutdown (); - return EXIT_FAILURE; - } - - g_signal_connect (miner_applications, "finished", - G_CALLBACK (miner_finished_cb), - NULL); - - /* Request DBus name */ - dbus_name = tracker_domain_ontology_get_domain (domain_ontology, DBUS_NAME_SUFFIX); - - if (!tracker_dbus_request_name (connection, dbus_name, &error)) { - g_critical ("Could not request DBus name '%s': %s", - dbus_name, error->message); - g_error_free (error); - g_free (dbus_name); - return EXIT_FAILURE; - } - - g_free (dbus_name); - - initialize_signal_handler (); - - /* Go, go, go! */ - tracker_miner_start (miner_applications); - g_main_loop_run (main_loop); - - g_message ("Shutdown started"); - - g_main_loop_unref (main_loop); - g_object_unref (G_OBJECT (miner_applications)); - g_object_unref (connection); - g_object_unref (proxy); - g_object_unref (domain_ontology); - - tracker_log_shutdown (); - - g_print ("\nOK\n\n"); - - return EXIT_SUCCESS; -} |