Beispiel #1
0
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;
}
Beispiel #2
0
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);
}