summary refs log tree commit diff
path: root/shared/nm-glib-aux/nm-dbus-aux.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared/nm-glib-aux/nm-dbus-aux.c')
-rw-r--r--shared/nm-glib-aux/nm-dbus-aux.c405
1 files changed, 0 insertions, 405 deletions
diff --git a/shared/nm-glib-aux/nm-dbus-aux.c b/shared/nm-glib-aux/nm-dbus-aux.c
deleted file mode 100644
index 9fb02a3f..00000000
--- a/shared/nm-glib-aux/nm-dbus-aux.c
+++ /dev/null
@@ -1,405 +0,0 @@
-/* SPDX-License-Identifier: LGPL-2.1-or-later */
-/*
- * Copyright (C) 2019 Red Hat, Inc.
- */
-
-#include "nm-glib-aux/nm-default-glib-i18n-lib.h"
-
-#include "nm-dbus-aux.h"
-
-/*****************************************************************************/
-
-static void
-_nm_dbus_connection_call_get_name_owner_cb(GObject *source, GAsyncResult *res, gpointer user_data)
-{
-    gs_unref_variant GVariant *ret           = NULL;
-    gs_free_error GError *             error = NULL;
-    const char *                       owner = NULL;
-    gpointer                           orig_user_data;
-    NMDBusConnectionCallGetNameOwnerCb callback;
-
-    nm_utils_user_data_unpack(user_data, &orig_user_data, &callback);
-
-    ret = g_dbus_connection_call_finish(G_DBUS_CONNECTION(source), res, &error);
-    if (ret)
-        g_variant_get(ret, "(&s)", &owner);
-
-    callback(owner, error, orig_user_data);
-}
-
-void
-nm_dbus_connection_call_get_name_owner(GDBusConnection *                  dbus_connection,
-                                       const char *                       service_name,
-                                       int                                timeout_msec,
-                                       GCancellable *                     cancellable,
-                                       NMDBusConnectionCallGetNameOwnerCb callback,
-                                       gpointer                           user_data)
-{
-    nm_assert(callback);
-
-    g_dbus_connection_call(dbus_connection,
-                           DBUS_SERVICE_DBUS,
-                           DBUS_PATH_DBUS,
-                           DBUS_INTERFACE_DBUS,
-                           "GetNameOwner",
-                           g_variant_new("(s)", service_name),
-                           G_VARIANT_TYPE("(s)"),
-                           G_DBUS_CALL_FLAGS_NONE,
-                           timeout_msec,
-                           cancellable,
-                           _nm_dbus_connection_call_get_name_owner_cb,
-                           nm_utils_user_data_pack(user_data, callback));
-}
-
-/*****************************************************************************/
-
-static void
-_nm_dbus_connection_call_default_cb(GObject *source, GAsyncResult *res, gpointer user_data)
-{
-    gs_unref_variant GVariant *ret      = NULL;
-    gs_free_error GError *        error = NULL;
-    gpointer                      orig_user_data;
-    NMDBusConnectionCallDefaultCb callback;
-
-    nm_utils_user_data_unpack(user_data, &orig_user_data, &callback);
-
-    ret = g_dbus_connection_call_finish(G_DBUS_CONNECTION(source), res, &error);
-
-    nm_assert((!!ret) != (!!error));
-
-    callback(ret, error, orig_user_data);
-}
-
-void
-nm_dbus_connection_call_get_all(GDBusConnection *             dbus_connection,
-                                const char *                  bus_name,
-                                const char *                  object_path,
-                                const char *                  interface_name,
-                                int                           timeout_msec,
-                                GCancellable *                cancellable,
-                                NMDBusConnectionCallDefaultCb callback,
-                                gpointer                      user_data)
-{
-    nm_assert(callback);
-
-    g_dbus_connection_call(dbus_connection,
-                           bus_name,
-                           object_path,
-                           DBUS_INTERFACE_PROPERTIES,
-                           "GetAll",
-                           g_variant_new("(s)", interface_name),
-                           G_VARIANT_TYPE("(a{sv})"),
-                           G_DBUS_CALL_FLAGS_NONE,
-                           timeout_msec,
-                           cancellable,
-                           _nm_dbus_connection_call_default_cb,
-                           nm_utils_user_data_pack(user_data, callback));
-}
-
-void
-nm_dbus_connection_call_set(GDBusConnection *             dbus_connection,
-                            const char *                  bus_name,
-                            const char *                  object_path,
-                            const char *                  interface_name,
-                            const char *                  property_name,
-                            GVariant *                    value,
-                            int                           timeout_msec,
-                            GCancellable *                cancellable,
-                            NMDBusConnectionCallDefaultCb callback,
-                            gpointer                      user_data)
-{
-    g_dbus_connection_call(dbus_connection,
-                           bus_name,
-                           object_path,
-                           DBUS_INTERFACE_PROPERTIES,
-                           "Set",
-                           g_variant_new("(ssv)", interface_name, property_name, value),
-                           G_VARIANT_TYPE("()"),
-                           G_DBUS_CALL_FLAGS_NONE,
-                           timeout_msec,
-                           cancellable,
-                           callback ? _nm_dbus_connection_call_default_cb : NULL,
-                           callback ? nm_utils_user_data_pack(user_data, callback) : NULL);
-}
-
-/*****************************************************************************/
-
-static void
-_nm_dbus_connection_call_get_managed_objects_cb(GObject *     source,
-                                                GAsyncResult *res,
-                                                gpointer      user_data)
-{
-    gs_unref_variant GVariant *ret      = NULL;
-    gs_unref_variant GVariant *arg      = NULL;
-    gs_free_error GError *        error = NULL;
-    gpointer                      orig_user_data;
-    NMDBusConnectionCallDefaultCb callback;
-
-    nm_utils_user_data_unpack(user_data, &orig_user_data, &callback);
-
-    ret = g_dbus_connection_call_finish(G_DBUS_CONNECTION(source), res, &error);
-
-    nm_assert((!!ret) != (!!error));
-
-    if (ret) {
-        nm_assert(g_variant_is_of_type(ret, G_VARIANT_TYPE("(a{oa{sa{sv}}})")));
-        arg = g_variant_get_child_value(ret, 0);
-    }
-
-    callback(arg, error, orig_user_data);
-}
-
-void
-nm_dbus_connection_call_get_managed_objects(GDBusConnection *             dbus_connection,
-                                            const char *                  bus_name,
-                                            const char *                  object_path,
-                                            GDBusCallFlags                flags,
-                                            int                           timeout_msec,
-                                            GCancellable *                cancellable,
-                                            NMDBusConnectionCallDefaultCb callback,
-                                            gpointer                      user_data)
-{
-    nm_assert(callback);
-
-    g_dbus_connection_call(dbus_connection,
-                           bus_name,
-                           object_path,
-                           DBUS_INTERFACE_OBJECT_MANAGER,
-                           "GetManagedObjects",
-                           NULL,
-                           G_VARIANT_TYPE("(a{oa{sa{sv}}})"),
-                           flags,
-                           timeout_msec,
-                           cancellable,
-                           _nm_dbus_connection_call_get_managed_objects_cb,
-                           nm_utils_user_data_pack(user_data, callback));
-}
-
-/*****************************************************************************/
-
-static void
-_call_finish_cb(GObject *     source,
-                GAsyncResult *result,
-                gpointer      user_data,
-                gboolean      return_void,
-                gboolean      strip_dbus_error)
-{
-    gs_unref_object GTask *task      = user_data;
-    gs_unref_variant GVariant *ret   = NULL;
-    GError *                   error = NULL;
-
-    nm_assert(G_IS_DBUS_CONNECTION(source));
-    nm_assert(G_IS_TASK(user_data));
-
-    ret = g_dbus_connection_call_finish(G_DBUS_CONNECTION(source), result, &error);
-    if (!ret) {
-        if (strip_dbus_error)
-            g_dbus_error_strip_remote_error(error);
-        g_task_return_error(task, error);
-        return;
-    }
-
-    if (!return_void)
-        g_task_return_pointer(task, g_steal_pointer(&ret), (GDestroyNotify) g_variant_unref);
-    else {
-        nm_assert(g_variant_is_of_type(ret, G_VARIANT_TYPE("()")));
-        g_task_return_boolean(task, TRUE);
-    }
-}
-
-/**
- * nm_dbus_connection_call_finish_void_cb:
- *
- * A default callback to pass as callback to g_dbus_connection_call().
- *
- * - user_data must be a GTask, whose reference will be consumed by the
- *   callback.
- * - the return GVariant must be a empty tuple "()".
- * - the GTask is returned either with error or TRUE boolean.
- */
-void
-nm_dbus_connection_call_finish_void_cb(GObject *source, GAsyncResult *result, gpointer user_data)
-{
-    _call_finish_cb(source, result, user_data, TRUE, FALSE);
-}
-
-/**
- * nm_dbus_connection_call_finish_void_strip_dbus_error_cb:
- *
- * Like nm_dbus_connection_call_finish_void_cb(). The difference
- * is that on error this will first call g_dbus_error_strip_remote_error() on the error.
- */
-void
-nm_dbus_connection_call_finish_void_strip_dbus_error_cb(GObject *     source,
-                                                        GAsyncResult *result,
-                                                        gpointer      user_data)
-{
-    _call_finish_cb(source, result, user_data, TRUE, TRUE);
-}
-
-/**
- * nm_dbus_connection_call_finish_variant_cb:
- *
- * A default callback to pass as callback to g_dbus_connection_call().
- *
- * - user_data must be a GTask, whose reference will be consumed by the
- *   callback.
- * - the GTask is returned either with error or with a pointer containing the GVariant.
- */
-void
-nm_dbus_connection_call_finish_variant_cb(GObject *source, GAsyncResult *result, gpointer user_data)
-{
-    _call_finish_cb(source, result, user_data, FALSE, FALSE);
-}
-
-/**
- * nm_dbus_connection_call_finish_variant_strip_dbus_error_cb:
- *
- * Like nm_dbus_connection_call_finish_variant_strip_dbus_error_cb(). The difference
- * is that on error this will first call g_dbus_error_strip_remote_error() on the error.
- */
-void
-nm_dbus_connection_call_finish_variant_strip_dbus_error_cb(GObject *     source,
-                                                           GAsyncResult *result,
-                                                           gpointer      user_data)
-{
-    _call_finish_cb(source, result, user_data, FALSE, TRUE);
-}
-
-/*****************************************************************************/
-
-typedef struct {
-    char *              bus_name;
-    char *              object_path;
-    char *              interface_name;
-    char *              method_name;
-    GVariant *          parameters;
-    GDBusConnection *   connection;
-    const GVariantType *reply_type;
-    int                 timeout_msec;
-} CallAsyncInfo;
-
-static void
-call_async_info_destroy(CallAsyncInfo *info)
-{
-    g_free(info->bus_name);
-    g_free(info->object_path);
-    g_free(info->interface_name);
-    g_free(info->method_name);
-    g_variant_unref(info->parameters);
-    nm_g_object_unref(info->connection);
-    g_free(info);
-}
-
-static void
-call_cb(GObject *source, GAsyncResult *result, gpointer user_data)
-{
-    gs_unref_object GTask *task  = user_data;
-    GError *               error = NULL;
-    GVariant *             ret;
-
-    ret = g_dbus_connection_call_finish(G_DBUS_CONNECTION(source), result, &error);
-    if (!ret) {
-        g_task_return_error(task, error);
-        return;
-    }
-
-    g_task_return_pointer(task, ret, (GDestroyNotify) g_variant_unref);
-}
-
-static void
-call_bus_get_cb(GObject *source, GAsyncResult *result, gpointer user_data)
-{
-    gs_unref_object GTask *task = user_data;
-    GCancellable *         cancellable;
-    CallAsyncInfo *        info;
-    GError *               error = NULL;
-
-    info             = g_task_get_task_data(task);
-    info->connection = g_bus_get_finish(result, &error);
-    cancellable      = g_task_get_cancellable(task);
-
-    if (!info->connection) {
-        g_task_return_error(task, g_steal_pointer(&error));
-        return;
-    }
-
-    g_dbus_connection_call(info->connection,
-                           info->bus_name,
-                           info->object_path,
-                           info->interface_name,
-                           info->method_name,
-                           info->parameters,
-                           info->reply_type,
-                           G_DBUS_CALL_FLAGS_NONE,
-                           info->timeout_msec,
-                           cancellable,
-                           call_cb,
-                           g_steal_pointer(&task));
-}
-
-void
-nm_dbus_call(GBusType            bus_type,
-             const char *        bus_name,
-             const char *        object_path,
-             const char *        interface_name,
-             const char *        method_name,
-             GVariant *          parameters,
-             const GVariantType *reply_type,
-             GCancellable *      cancellable,
-             int                 timeout_msec,
-             GAsyncReadyCallback callback,
-             gpointer            user_data)
-{
-    GTask *        task;
-    CallAsyncInfo *info;
-
-    info  = g_new(CallAsyncInfo, 1);
-    *info = (CallAsyncInfo){
-        .bus_name       = g_strdup(bus_name),
-        .object_path    = g_strdup(object_path),
-        .interface_name = g_strdup(interface_name),
-        .method_name    = g_strdup(method_name),
-        .parameters     = g_variant_ref_sink(parameters),
-        .reply_type     = reply_type,
-        .timeout_msec   = timeout_msec,
-    };
-
-    task = nm_g_task_new(NULL, cancellable, nm_dbus_call, callback, user_data);
-    g_task_set_task_data(task, info, (GDestroyNotify) call_async_info_destroy);
-
-    g_bus_get(bus_type, cancellable, call_bus_get_cb, task);
-}
-
-GVariant *
-nm_dbus_call_finish(GAsyncResult *result, GError **error)
-{
-    nm_assert(nm_g_task_is_valid(result, NULL, nm_dbus_call));
-
-    return g_task_propagate_pointer(G_TASK(result), error);
-}
-
-/*****************************************************************************/
-
-gboolean
-_nm_dbus_error_is(GError *error, ...)
-{
-    gs_free char *dbus_error = NULL;
-    const char *  name;
-    va_list       ap;
-
-    dbus_error = g_dbus_error_get_remote_error(error);
-    if (!dbus_error)
-        return FALSE;
-
-    va_start(ap, error);
-    while ((name = va_arg(ap, const char *))) {
-        if (nm_streq(dbus_error, name)) {
-            va_end(ap);
-            return TRUE;
-        }
-    }
-    va_end(ap);
-
-    return FALSE;
-}