int main (int argc, char *argv[]) { DBusGConnection *bus; DBusGProxy *proxy; MMManager *manager; GError *err = NULL; guint id; mm_options_parse (argc, argv); g_type_init (); setup_signals (); if (!mm_options_debug ()) logging_setup (); g_message ("ModemManager (version " MM_DIST_VERSION ") starting..."); bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &err); if (!bus) { g_warning ("Could not get the system bus. Make sure " "the message bus daemon is running! Message: %s", err->message); g_error_free (err); return -1; } proxy = create_dbus_proxy (bus); if (!proxy) return -1; manager = mm_manager_new (bus); g_idle_add (start_manager, manager); loop = g_main_loop_new (NULL, FALSE); id = g_signal_connect (proxy, "destroy", G_CALLBACK (destroy_cb), loop); g_main_loop_run (loop); g_signal_handler_disconnect (proxy, id); mm_manager_shutdown (manager); /* Wait for all modems to be removed */ while (mm_manager_num_modems (manager)) { GMainContext *ctx = g_main_loop_get_context (loop); g_main_context_iteration (ctx, FALSE); g_usleep (50); } g_object_unref (manager); g_object_unref (proxy); dbus_g_connection_unref (bus); logging_shutdown (); return 0; }
void mmcli_get_manager (GDBusConnection *connection, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GSimpleAsyncResult *result; result = g_simple_async_result_new (G_OBJECT (connection), callback, user_data, mmcli_get_manager); mm_manager_new (connection, G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE, cancellable, (GAsyncReadyCallback)manager_new_ready, result); }
static void on_bus_get_ready (GObject *source_object, GAsyncResult *res, gpointer user_data) { GClueModemSourcePrivate *priv = GCLUE_MODEM_SOURCE (user_data)->priv; GDBusConnection *connection; GError *error = NULL; connection = g_bus_get_finish (res, &error); if (connection == NULL) { g_warning ("Failed to connect to system D-Bus: %s", error->message); g_error_free (error); return; } mm_manager_new (connection, 0, priv->cancellable, on_manager_new_ready, user_data); }