summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-10-06 22:44:25 +0200
committerThomas Haller <thaller@redhat.com>2019-10-16 08:56:00 +0200
commit6ee416d24779ca8872f96f05eb0b294d1cae9e3e (patch)
tree7d5453a33f7363e3106871a725cc0a5250386e25
parentbafabddecebbc2380e2364d50b6380df1bfb6905 (diff)
downloadNetworkManager-6ee416d24779ca8872f96f05eb0b294d1cae9e3e.tar.gz
libnm: implement nm_device_disconnect()/nm_device_disconnect_async() by using GDBusConnection directly
-rw-r--r--libnm/nm-device.c73
1 files changed, 29 insertions, 44 deletions
diff --git a/libnm/nm-device.c b/libnm/nm-device.c
index 253f866409..b4236b6cd6 100644
--- a/libnm/nm-device.c
+++ b/libnm/nm-device.c
@@ -2292,34 +2292,20 @@ nm_device_disconnect (NMDevice *device,
GCancellable *cancellable,
GError **error)
{
- gboolean ret;
-
g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
+ g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE);
+ g_return_val_if_fail (!error || !*error, FALSE);
- ret = nmdbus_device_call_disconnect_sync (NM_DEVICE_GET_PRIVATE (device)->proxy,
- cancellable, error);
- if (error && *error)
- g_dbus_error_strip_remote_error (*error);
- return ret;
-}
-
-static void
-device_disconnect_cb (GObject *proxy,
- GAsyncResult *result,
- gpointer user_data)
-{
- GSimpleAsyncResult *simple = user_data;
- GError *error = NULL;
-
- if (nmdbus_device_call_disconnect_finish (NMDBUS_DEVICE (proxy), result, &error))
- g_simple_async_result_set_op_res_gboolean (simple, TRUE);
- else {
- g_dbus_error_strip_remote_error (error);
- g_simple_async_result_take_error (simple, error);
- }
-
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
+ return _nm_object_dbus_call_sync_void (device,
+ cancellable,
+ g_dbus_proxy_get_object_path (G_DBUS_PROXY (NM_DEVICE_GET_PRIVATE (device)->proxy)),
+ NM_DBUS_INTERFACE_DEVICE,
+ "Disconnect",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ NM_DBUS_DEFAULT_TIMEOUT_MSEC,
+ TRUE,
+ error);
}
/**
@@ -2339,18 +2325,22 @@ nm_device_disconnect_async (NMDevice *device,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *simple;
-
g_return_if_fail (NM_IS_DEVICE (device));
+ g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
- simple = g_simple_async_result_new (G_OBJECT (device), callback, user_data,
- nm_device_disconnect_async);
- if (cancellable)
- g_simple_async_result_set_check_cancellable (simple, cancellable);
-
- nmdbus_device_call_disconnect (NM_DEVICE_GET_PRIVATE (device)->proxy,
- cancellable,
- device_disconnect_cb, simple);
+ _nm_object_dbus_call (device,
+ nm_device_disconnect_async,
+ cancellable,
+ callback,
+ user_data,
+ g_dbus_proxy_get_object_path (G_DBUS_PROXY (NM_DEVICE_GET_PRIVATE (device)->proxy)),
+ NM_DBUS_INTERFACE_DEVICE,
+ "Disconnect",
+ g_variant_new ("()"),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ NM_DBUS_DEFAULT_TIMEOUT_MSEC,
+ nm_dbus_connection_call_finish_void_strip_dbus_error_cb);
}
/**
@@ -2369,15 +2359,10 @@ nm_device_disconnect_finish (NMDevice *device,
GAsyncResult *result,
GError **error)
{
- GSimpleAsyncResult *simple;
-
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (device), nm_device_disconnect_async), FALSE);
+ g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
+ g_return_val_if_fail (nm_g_task_is_valid (result, device, nm_device_disconnect_async), FALSE);
- simple = G_SIMPLE_ASYNC_RESULT (result);
- if (g_simple_async_result_propagate_error (simple, error))
- return FALSE;
- else
- return g_simple_async_result_get_op_res_gboolean (simple);
+ return g_task_propagate_boolean (G_TASK (result), error);
}
/**