From 0625f2c0949e7f4c1320b3bf4b18771b2feed1f4 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 1 Oct 2019 16:51:10 +0200 Subject: [PATCH] libnm: implement nm_client_deactivate_connection() by using GDBusConnection directly Eventually, I will refactor libnm to no longer use gdbus-codegen and no GDBusProxy. In preparation of that, we must stop using that API. As first step, change nm_client_deactivate_connection(). Note how this was done previously: - nm_client_deactivate_connection() calls nm_manager_deactivate_connection() - nmdbus_manager_call_deactivate_connection_sync() calls g_dbus_proxy_call_sync() - g_dbus_proxy_call_sync() calls g_dbus_connection_call_sync() Currently this is still a bit ugly, because NMClient doesn't directly track the GDBusConnection nor the name owner. Instead, we need to peel it out of the object manager. One day, that will all be nicer, but first get rid of gdbus-codegen. --- libnm/nm-client.c | 18 ++++++++++++++---- libnm/nm-manager.c | 21 --------------------- libnm/nm-manager.h | 5 ----- 3 files changed, 14 insertions(+), 30 deletions(-) diff --git a/libnm/nm-client.c b/libnm/nm-client.c index e2c1ea751f..3c64891eed 100644 --- a/libnm/nm-client.c +++ b/libnm/nm-client.c @@ -1476,14 +1476,24 @@ nm_client_deactivate_connection (NMClient *client, GCancellable *cancellable, GError **error) { + const char *active_path; + g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (active), FALSE); - if (!nm_client_get_nm_running (client)) - return TRUE; + active_path = nm_object_get_path (NM_OBJECT (active)); + g_return_val_if_fail (active_path, FALSE); - return nm_manager_deactivate_connection (NM_CLIENT_GET_PRIVATE (client)->manager, - active, cancellable, error); + return _nm_object_dbus_call_sync_void (client, + cancellable, + NM_DBUS_PATH, + NM_DBUS_INTERFACE, + "DeactivateConnection", + g_variant_new ("(o)", active_path), + G_DBUS_CALL_FLAGS_NONE, + NM_DBUS_DEFAULT_TIMEOUT_MSEC, + TRUE, + error); } static void diff --git a/libnm/nm-manager.c b/libnm/nm-manager.c index 11a7796572..bc0a6f146d 100644 --- a/libnm/nm-manager.c +++ b/libnm/nm-manager.c @@ -1271,27 +1271,6 @@ checkpoint_added (NMManager *manager, NMCheckpoint *checkpoint) checkpoint_info_complete (manager, info, checkpoint, NULL); } -gboolean -nm_manager_deactivate_connection (NMManager *manager, - NMActiveConnection *active, - GCancellable *cancellable, - GError **error) -{ - const char *path; - gboolean ret; - - g_return_val_if_fail (NM_IS_MANAGER (manager), FALSE); - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (active), FALSE); - - path = nm_object_get_path (NM_OBJECT (active)); - ret = nmdbus_manager_call_deactivate_connection_sync (NM_MANAGER_GET_PRIVATE (manager)->proxy, - path, - cancellable, error); - if (error && *error) - g_dbus_error_strip_remote_error (*error); - return ret; -} - static void deactivated_cb (GObject *object, GAsyncResult *result, diff --git a/libnm/nm-manager.h b/libnm/nm-manager.h index e9c09c62c5..6c738103ea 100644 --- a/libnm/nm-manager.h +++ b/libnm/nm-manager.h @@ -180,11 +180,6 @@ NMActiveConnection *nm_manager_add_and_activate_connection_finish (NMManager *ma GVariant **out_result, GError **error); -_NM_DEPRECATED_SYNC_METHOD_INTERNAL -gboolean nm_manager_deactivate_connection (NMManager *manager, - NMActiveConnection *active, - GCancellable *cancellable, - GError **error); void nm_manager_deactivate_connection_async (NMManager *manager, NMActiveConnection *active, GCancellable *cancellable,