libnm: implement nm_device_delete()/nm_device_delete_async() by using GDBusConnection directly

This commit is contained in:
Thomas Haller
2019-10-06 22:50:29 +02:00
parent 6ee416d247
commit c1046dd803

View File

@@ -2383,34 +2383,20 @@ nm_device_delete (NMDevice *device,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
gboolean ret;
g_return_val_if_fail (NM_IS_DEVICE (device), FALSE); 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_delete_sync (NM_DEVICE_GET_PRIVATE (device)->proxy, return _nm_object_dbus_call_sync_void (device,
cancellable, error); cancellable,
if (error && *error) g_dbus_proxy_get_object_path (G_DBUS_PROXY (NM_DEVICE_GET_PRIVATE (device)->proxy)),
g_dbus_error_strip_remote_error (*error); NM_DBUS_INTERFACE_DEVICE,
return ret; "Delete",
} g_variant_new ("()"),
G_DBUS_CALL_FLAGS_NONE,
static void NM_DBUS_DEFAULT_TIMEOUT_MSEC,
device_delete_cb (GObject *proxy, TRUE,
GAsyncResult *result, error);
gpointer user_data)
{
GSimpleAsyncResult *simple = user_data;
GError *error = NULL;
if (nmdbus_device_call_delete_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);
} }
/** /**
@@ -2429,18 +2415,22 @@ nm_device_delete_async (NMDevice *device,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data) gpointer user_data)
{ {
GSimpleAsyncResult *simple;
g_return_if_fail (NM_IS_DEVICE (device)); 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_object_dbus_call (device,
nm_device_delete_async); nm_device_delete_async,
if (cancellable) cancellable,
g_simple_async_result_set_check_cancellable (simple, cancellable); callback,
user_data,
nmdbus_device_call_delete (NM_DEVICE_GET_PRIVATE (device)->proxy, g_dbus_proxy_get_object_path (G_DBUS_PROXY (NM_DEVICE_GET_PRIVATE (device)->proxy)),
cancellable, NM_DBUS_INTERFACE_DEVICE,
device_delete_cb, simple); "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);
} }
/** /**
@@ -2459,15 +2449,10 @@ nm_device_delete_finish (NMDevice *device,
GAsyncResult *result, GAsyncResult *result,
GError **error) GError **error)
{ {
GSimpleAsyncResult *simple; g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
g_return_val_if_fail (nm_g_task_is_valid (result, device, nm_device_delete_async), FALSE);
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (device), nm_device_delete_async), FALSE); return g_task_propagate_boolean (G_TASK (result), error);
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);
} }
/** /**