mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-01 16:08:02 +02:00
libnm: implement nm_remote_connection_save()/nm_remote_connection_save_async() by using GDBusConnection directly
This commit is contained in:
parent
eff5e730ef
commit
dd94a8c0a9
1 changed files with 29 additions and 44 deletions
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include "nm-remote-connection.h"
|
||||
|
||||
#include "nm-glib-aux/nm-dbus-aux.h"
|
||||
#include "nm-dbus-interface.h"
|
||||
#include "nm-utils.h"
|
||||
#include "nm-setting-connection.h"
|
||||
|
|
@ -273,34 +274,19 @@ nm_remote_connection_save (NMRemoteConnection *connection,
|
|||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
NMRemoteConnectionPrivate *priv;
|
||||
gboolean ret;
|
||||
|
||||
g_return_val_if_fail (NM_IS_REMOTE_CONNECTION (connection), FALSE);
|
||||
g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE);
|
||||
|
||||
priv = NM_REMOTE_CONNECTION_GET_PRIVATE (connection);
|
||||
|
||||
ret = nmdbus_settings_connection_call_save_sync (priv->proxy, cancellable, error);
|
||||
if (error && *error)
|
||||
g_dbus_error_strip_remote_error (*error);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
save_cb (GObject *proxy, GAsyncResult *result, gpointer user_data)
|
||||
{
|
||||
GSimpleAsyncResult *simple = user_data;
|
||||
GError *error = NULL;
|
||||
|
||||
if (nmdbus_settings_connection_call_save_finish (NMDBUS_SETTINGS_CONNECTION (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 (connection,
|
||||
cancellable,
|
||||
g_dbus_proxy_get_object_path (G_DBUS_PROXY (NM_REMOTE_CONNECTION_GET_PRIVATE (connection)->proxy)),
|
||||
NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
|
||||
"Save",
|
||||
g_variant_new ("()"),
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
NM_DBUS_DEFAULT_TIMEOUT_MSEC,
|
||||
TRUE,
|
||||
error);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -319,18 +305,22 @@ nm_remote_connection_save_async (NMRemoteConnection *connection,
|
|||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMRemoteConnectionPrivate *priv;
|
||||
GSimpleAsyncResult *simple;
|
||||
|
||||
g_return_if_fail (NM_IS_REMOTE_CONNECTION (connection));
|
||||
g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
|
||||
|
||||
priv = NM_REMOTE_CONNECTION_GET_PRIVATE (connection);
|
||||
|
||||
simple = g_simple_async_result_new (G_OBJECT (connection), callback, user_data,
|
||||
nm_remote_connection_save_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nmdbus_settings_connection_call_save (priv->proxy, cancellable, save_cb, simple);
|
||||
_nm_object_dbus_call (connection,
|
||||
nm_remote_connection_save_async,
|
||||
cancellable,
|
||||
callback,
|
||||
user_data,
|
||||
g_dbus_proxy_get_object_path (G_DBUS_PROXY (NM_REMOTE_CONNECTION_GET_PRIVATE (connection)->proxy)),
|
||||
NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
|
||||
"Save",
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -348,15 +338,10 @@ nm_remote_connection_save_finish (NMRemoteConnection *connection,
|
|||
GAsyncResult *result,
|
||||
GError **error)
|
||||
{
|
||||
GSimpleAsyncResult *simple;
|
||||
g_return_val_if_fail (NM_IS_REMOTE_CONNECTION (connection), FALSE);
|
||||
g_return_val_if_fail (nm_g_task_is_valid (result, connection, nm_remote_connection_save_async), FALSE);
|
||||
|
||||
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (connection), nm_remote_connection_save_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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue