int main(int argc, char* argv[]) { GError* error = NULL; GOptionContext* context; GMainLoop* mainloop; int err = 0; bool success; #if !GLIB_CHECK_VERSION(2, 36, 0) // g_type_init() is deprecated on GLib since 2.36, Tizen has 2.32. g_type_init(); #endif context = g_option_context_new("- Crosswalk Application Management"); g_option_context_add_main_entries(context, entries, NULL); if (!g_option_context_parse(context, &argc, &argv, &error)) { g_print("option parsing failed: %s\n", error->message); exit(1); } GDBusObjectManager* installed_om = g_dbus_object_manager_client_new_for_bus_sync( G_BUS_TYPE_SESSION, G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE, xwalk_service_name, xwalk_installed_path, NULL, NULL, NULL, NULL, NULL); if (!installed_om) { g_print("Service '%s' could not be reached\n", xwalk_service_name); exit(1); } if (install_path) { success = install_application(install_path); } else if (uninstall_appid) { success = uninstall_application(installed_om, uninstall_appid); } else { g_print("Application ID Application Name\n"); g_print("-----------------------------------------------------\n"); list_applications(installed_om); g_print("-----------------------------------------------------\n"); success = true; } return success ? 0 : 1; }
static void _setup_agent_and_adapters(GTlmNfc* self) { GError *error = NULL; /* Introspection data for the agent object we are exporting */ const gchar introspection_xml[] = "<node>" " <interface name='org.neard.NDEFAgent'>" " <method name='GetNDEF'>" " <arg type='a{sv}' name='values' direction='in'/>" " </method>" " <method name='Release'>" " </method>" " </interface>" "</node>"; const GDBusInterfaceVTable interface_vtable = { _handle_agent_method_call, _handle_agent_get_property, _handle_agent_set_property }; self->system_bus = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); if (self->system_bus == NULL) { g_debug ("Error getting a system bus: %s", error->message); g_error_free (error); return; } GDBusNodeInfo *introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); self->agent_registration_id = g_dbus_connection_register_object (self->system_bus, "/org/tlmnfc/agent", introspection_data->interfaces[0], &interface_vtable, self, NULL, &error); if (self->agent_registration_id <= 0) { g_debug ("Error registering an agent object: %s", error->message); g_dbus_node_info_unref (introspection_data); g_error_free (error); return; } g_dbus_node_info_unref (introspection_data); GVariant* agent_register_response = g_dbus_connection_call_sync (self->system_bus, "org.neard", "/org/neard", "org.neard.AgentManager", "RegisterNDEFAgent", g_variant_new("(os)", "/org/tlmnfc/agent", "application/gtlm-nfc"), NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (agent_register_response == NULL) { g_debug ("Error registering an agent with neard: %s", error->message); g_error_free (error); return; } g_variant_unref(agent_register_response); self->neard_manager = g_dbus_object_manager_client_new_for_bus_sync (G_BUS_TYPE_SYSTEM, G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE, "org.neard", "/", NULL, NULL, NULL, NULL, &error); if (self->neard_manager == NULL) { g_debug ("Error creating neard object manager: %s", error->message); g_error_free (error); return ; } // subscribe to interface added/removed signals g_signal_connect (G_DBUS_OBJECT_MANAGER(self->neard_manager), "interface-added", G_CALLBACK (_on_interface_added), self); g_signal_connect (G_DBUS_OBJECT_MANAGER(self->neard_manager), "interface-removed", G_CALLBACK (_on_interface_removed), self); g_signal_connect (G_DBUS_OBJECT_MANAGER(self->neard_manager), "object-added", G_CALLBACK (_on_object_added), self); g_signal_connect (G_DBUS_OBJECT_MANAGER(self->neard_manager), "object-removed", G_CALLBACK (_on_object_removed), self); g_signal_connect (G_DBUS_OBJECT_MANAGER(self->neard_manager), "interface-proxy-properties-changed", G_CALLBACK (_on_property_changed), self); _setup_nfc_adapters(self); return; }
static void storage_provider_constructed (GObject *_object) { StorageProvider *provider = STORAGE_PROVIDER (_object); GError *error = NULL; /* TODO: use GInitable/GAsyncInitable or start() pattern here */ provider->udisks_client = udisks_client_new_sync (NULL, &error); if (provider->udisks_client == NULL) { g_warning ("Error connecting to udisks: %s (%s, %d)", error->message, g_quark_to_string (error->domain), error->code); g_clear_error (&error); goto out; } provider->lvm_objman = g_dbus_object_manager_client_new_for_bus_sync (G_BUS_TYPE_SYSTEM, 0, "com.redhat.storaged", "/org/freedesktop/UDisks2", lvm_get_proxy_type, NULL, NULL, NULL, &error); if (provider->lvm_objman == NULL) { g_warning ("Error connecting to storaged: %s (%s, %d)", error->message, g_quark_to_string (error->domain), error->code); g_clear_error (&error); goto out; } g_signal_connect (provider->lvm_objman, "object-added", G_CALLBACK (on_lvm_object_added), provider); g_signal_connect (provider->lvm_objman, "object-removed", G_CALLBACK (on_lvm_object_removed), provider); g_signal_connect (provider->lvm_objman, "interface-added", G_CALLBACK (on_lvm_interface_added), provider); g_signal_connect (provider->lvm_objman, "interface-removed", G_CALLBACK (on_lvm_interface_removed), provider); GDBusConnection *connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); if (connection) { g_dbus_connection_signal_subscribe (connection, "com.redhat.storaged", "org.freedesktop.DBus.Properties", "PropertiesChanged", NULL, NULL, G_DBUS_SIGNAL_FLAGS_NONE, on_lvm_properties_changed, provider, NULL); } /* init */ provider_update (provider); provider_update_jobs (provider); g_signal_connect (provider->udisks_client, "changed", G_CALLBACK (on_udisks_client_changed), provider); /* We don't use the "changed" signal to watch jobs since we might miss some that only exist for a very short period, but we still want to report their failures. */ GDBusObjectManager *object_manager; object_manager = udisks_client_get_object_manager (provider->udisks_client); g_signal_connect (object_manager, "object-added", G_CALLBACK (on_object_added), provider); g_signal_connect (object_manager, "object-removed", G_CALLBACK (on_object_removed), provider); out: if (G_OBJECT_CLASS (storage_provider_parent_class)->constructed != NULL) G_OBJECT_CLASS (storage_provider_parent_class)->constructed (_object); }