Exemplo n.º 1
0
static void
evd_dbus_agent_on_new_dbus_proxy (GObject      *obj,
                                  GAsyncResult *res,
                                  gpointer      user_data)
{
  GSimpleAsyncResult *result;
  GDBusProxy *proxy;
  GError *error = NULL;
  ProxyData *proxy_data;

  proxy_data = (ProxyData *) user_data;

  result = proxy_data->async_res;

  if ( (proxy = g_dbus_proxy_new_finish (res, &error)) != NULL)
    {
      ObjectData *obj_data;
      GDBusProxyFlags flags;
      guint *proxy_id;

      obj_data = proxy_data->obj_data;

      obj_data->proxy_counter++;

      proxy_data->proxy_id = obj_data->proxy_counter;
      proxy_data->proxy = proxy;

      g_hash_table_insert (obj_data->proxies,
                           &proxy_data->proxy_id,
                           proxy_data);

      proxy_id = g_new (guint, 1);
      *proxy_id = obj_data->proxy_counter;
      g_simple_async_result_set_op_res_gpointer (result,
                                                 proxy_id,
                                                 g_free);

      flags = g_dbus_proxy_get_flags (proxy);
      if ( (flags & G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS) == 0)
        {
          g_signal_connect (proxy,
                            "g-signal",
                            G_CALLBACK (evd_dbus_agent_on_proxy_signal),
                            proxy_data);
        }
      if ( (flags & G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES) == 0)
        {
          g_signal_connect (proxy,
                        "g-properties-changed",
                        G_CALLBACK (evd_dbus_agent_on_proxy_properties_changed),
                        proxy_data);
        }
    }
  else
    {
      g_simple_async_result_set_from_error (proxy_data->async_res, error);
      g_error_free (error);
      evd_dbus_agent_free_proxy_data (proxy_data);
    }

  g_simple_async_result_complete (result);
  g_object_unref (result);
}
int main(int argc, char *argv[])
{
    GDBusConnection *connection;
    GError *error = NULL;
    GDBusProxy *proxy;
    gchar *name;
    gchar *object_path;
    gchar *interface_name;
    GDBusProxyFlags flags;

    g_type_init();

    connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
    if (connection == NULL) {
        if (error != NULL) {
            g_printerr("get connection error: %s\n", error->message);
            g_error_free(error);
            
        } else {
            g_printerr("get connection error: unknown error\n");
        }
        return -1;

    } else {
        g_print("get connection success\n");
    }

    name = "net.connman";
    object_path = "/";
    interface_name = "net.connman.Manager";

#if 0
    GDBusProxy *g_dbus_proxy_new_sync (GDBusConnection *connection,
                                       GDBusProxyFlags flags,
                                       GDBusInterfaceInfo *info,
                                       const gchar *name,
                                       const gchar *object_path,
                                       const gchar *interface_name,
                                       GCancellable *cancellable,
                                       GError **error);
#endif

    proxy = g_dbus_proxy_new_sync(connection,
                                  G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START
                                  | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
                                  NULL,
                                  name,
                                  object_path,
                                  interface_name,
                                  NULL,
                                  &error);
    if (proxy == NULL) {
        if (error != NULL) {
            g_printerr("get proxy failed: %s\n", error->message);
        } else {
            g_printerr("get proxy failed: %s\n", "unknown error");
        }
    }
    g_print("get proxy success\n");

    flags = g_dbus_proxy_get_flags(proxy);
    g_print("flags: %d\n", (int)flags);
    proxy_flags_print(flags);

    /**
     * get cached property
     */
    GVariant *val;
#if 0
    GDBusNodeInfo *introspection_data;
    GDBusInterfaceInfo *info;

    introspection_data = g_dbus_node_info_new_for_xml(connman_manager_xml, NULL);
    if (introspection_data == NULL) {
        g_printerr("get introspection_data failed\n");
        return -1;
    }
    info = introspection_data->interfaces[0];
    g_dbus_proxy_set_interface_info(proxy, info);
#endif

    //GVariant *g_dbus_proxy_get_cached_property (GDBusProxy *proxy,
    //const gchar *property_name);
    val = g_dbus_proxy_get_cached_property(proxy, "ActiveProfile");
    if (val == NULL) {
        g_print("get val failed\n");
        return -1;
    }
    g_print("get val success\n");

    return 0;
}
Exemplo n.º 3
0
int main(int argc, char *argv[])
{
    GDBusConnection *connection;
    GError *error = NULL;
    GDBusProxy *proxy;
    gchar *name;
    gchar *object_path;
    gchar *interface_name;
    GDBusProxyFlags flags;

    g_type_init();

    connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
    if (connection == NULL) {
        if (error != NULL) {
            g_printerr("get connection error: %s\n", error->message);
            g_error_free(error);
            
        } else {
            g_printerr("get connection error: unknown error\n");
        }
        return -1;

    } else {
        g_print("get connection success\n");
    }

    name = "net.connman";
    object_path = "/";
    interface_name = "net.connman.Manager";

#if 0
    GDBusProxy *g_dbus_proxy_new_sync (GDBusConnection *connection,
                                       GDBusProxyFlags flags,
                                       GDBusInterfaceInfo *info,
                                       const gchar *name,
                                       const gchar *object_path,
                                       const gchar *interface_name,
                                       GCancellable *cancellable,
                                       GError **error);
#endif

    proxy = g_dbus_proxy_new_sync(connection,
                                  G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START
                                  | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
                                  NULL,
                                  name,
                                  object_path,
                                  interface_name,
                                  NULL,
                                  &error);
    if (proxy == NULL) {
        if (error != NULL) {
            g_printerr("get proxy failed: %s\n", error->message);
        } else {
            g_printerr("get proxy failed: %s\n", "unknown error");
        }
    }
    g_print("get proxy success\n");

    flags = g_dbus_proxy_get_flags(proxy);
    g_print("flags: %d\n", (int)flags);
    proxy_flags_print(flags);

    return 0;
}