diff options
author | Thomas Haller <thaller@redhat.com> | 2019-10-06 23:16:48 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-10-16 08:56:00 +0200 |
commit | 4af6219226e0276435fc6bf7bee279017cf34e44 (patch) | |
tree | a950b8fbc17194af90778d0fe0e37c64e4531408 | |
parent | d795bcd7305390386610ce70ab29971f7413b555 (diff) | |
download | NetworkManager-4af6219226e0276435fc6bf7bee279017cf34e44.tar.gz |
libnm: implement nm_client_load_connections_async() by using GDBusConnection directly
-rw-r--r-- | libnm/nm-client.c | 66 | ||||
-rw-r--r-- | libnm/nm-remote-settings.c | 65 | ||||
-rw-r--r-- | libnm/nm-remote-settings.h | 10 |
3 files changed, 27 insertions, 114 deletions
diff --git a/libnm/nm-client.c b/libnm/nm-client.c index ad3482bc81..cffb7bdd97 100644 --- a/libnm/nm-client.c +++ b/libnm/nm-client.c @@ -2112,23 +2112,6 @@ nm_client_load_connections (NMClient *client, return TRUE; } -static void -load_connections_cb (GObject *object, GAsyncResult *result, gpointer user_data) -{ - GSimpleAsyncResult *simple = user_data; - GError *error = NULL; - char **failures = NULL; - - if (nm_remote_settings_load_connections_finish (NM_REMOTE_SETTINGS (object), - &failures, result, &error)) - g_simple_async_result_set_op_res_gpointer (simple, failures, (GDestroyNotify) g_strfreev); - else - g_simple_async_result_take_error (simple, error); - - g_simple_async_result_complete (simple); - g_object_unref (simple); -} - /** * nm_client_load_connections_async: * @client: the %NMClient @@ -2149,24 +2132,23 @@ nm_client_load_connections_async (NMClient *client, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *simple; - GError *error = NULL; - g_return_if_fail (NM_IS_CLIENT (client)); - g_return_if_fail (filenames != NULL); - - if (!_nm_client_check_nm_running (client, &error)) { - g_simple_async_report_take_gerror_in_idle (G_OBJECT (client), callback, user_data, error); - return; - } + g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable)); - simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data, - nm_client_load_connections_async); - if (cancellable) - g_simple_async_result_set_check_cancellable (simple, cancellable); - nm_remote_settings_load_connections_async (NM_CLIENT_GET_PRIVATE (client)->settings, - filenames, - cancellable, load_connections_cb, simple); + _nm_object_dbus_call (client, + nm_client_load_connections_async, + cancellable, + callback, + user_data, + NM_DBUS_PATH_SETTINGS, + NM_DBUS_INTERFACE_SETTINGS, + "LoadConnections", + g_variant_new ("(^as)", + filenames ?: NM_PTRARRAY_EMPTY (char *)), + G_VARIANT_TYPE ("(bas)"), + G_DBUS_CALL_FLAGS_NONE, + NM_DBUS_DEFAULT_TIMEOUT_MSEC, + nm_dbus_connection_call_finish_variant_strip_dbus_error_cb); } /** @@ -2190,16 +2172,22 @@ nm_client_load_connections_finish (NMClient *client, GAsyncResult *result, GError **error) { - GSimpleAsyncResult *simple; + gs_unref_variant GVariant *ret = NULL; g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); - g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), FALSE); + g_return_val_if_fail (nm_g_task_is_valid (result, client, nm_client_load_connections_async), FALSE); - simple = G_SIMPLE_ASYNC_RESULT (result); - if (g_simple_async_result_propagate_error (simple, error)) + ret = g_task_propagate_pointer (G_TASK (result), error); + if (!ret) { + *failures = NULL; return FALSE; - if (failures) - *failures = g_strdupv (g_simple_async_result_get_op_res_gpointer (simple)); + } + + g_variant_get (ret, + "(b^as)", + NULL, + &failures); + return TRUE; } diff --git a/libnm/nm-remote-settings.c b/libnm/nm-remote-settings.c index bfad53ea52..d6be171df9 100644 --- a/libnm/nm-remote-settings.c +++ b/libnm/nm-remote-settings.c @@ -394,71 +394,6 @@ nm_remote_settings_add_connection2 (NMRemoteSettings *self, } } -static void -load_connections_cb (GObject *proxy, GAsyncResult *result, gpointer user_data) -{ - GSimpleAsyncResult *simple = user_data; - GError *error = NULL; - gboolean success; - char **failures = NULL; - - if (nmdbus_settings_call_load_connections_finish (NMDBUS_SETTINGS (proxy), - &success, &failures, - result, &error)) - g_simple_async_result_set_op_res_gpointer (simple, failures, (GDestroyNotify) g_strfreev); - 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); -} - -void -nm_remote_settings_load_connections_async (NMRemoteSettings *settings, - char **filenames, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - NMRemoteSettingsPrivate *priv; - GSimpleAsyncResult *simple; - - g_return_if_fail (NM_IS_REMOTE_SETTINGS (settings)); - g_return_if_fail (filenames != NULL); - - priv = NM_REMOTE_SETTINGS_GET_PRIVATE (settings); - - simple = g_simple_async_result_new (G_OBJECT (settings), callback, user_data, - nm_remote_settings_load_connections_async); - if (cancellable) - g_simple_async_result_set_check_cancellable (simple, cancellable); - - nmdbus_settings_call_load_connections (priv->proxy, - (const char * const *) filenames, - cancellable, load_connections_cb, simple); -} - -gboolean -nm_remote_settings_load_connections_finish (NMRemoteSettings *settings, - char ***failures, - GAsyncResult *result, - GError **error) -{ - GSimpleAsyncResult *simple; - - g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (settings), nm_remote_settings_load_connections_async), FALSE); - - simple = G_SIMPLE_ASYNC_RESULT (result); - if (g_simple_async_result_propagate_error (simple, error)) - return FALSE; - else { - *failures = g_strdupv (g_simple_async_result_get_op_res_gpointer (simple)); - return TRUE; - } -} - gboolean nm_remote_settings_reload_connections (NMRemoteSettings *settings, GCancellable *cancellable, diff --git a/libnm/nm-remote-settings.h b/libnm/nm-remote-settings.h index 020930f54b..636a497db7 100644 --- a/libnm/nm-remote-settings.h +++ b/libnm/nm-remote-settings.h @@ -75,16 +75,6 @@ void nm_remote_settings_add_connection2 (NMRemoteSettings *self, NMRemoteSettingAddConnection2Callback callback, gpointer user_data); -void nm_remote_settings_load_connections_async (NMRemoteSettings *settings, - char **filenames, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean nm_remote_settings_load_connections_finish (NMRemoteSettings *settings, - char ***failures, - GAsyncResult *result, - GError **error); - _NM_DEPRECATED_SYNC_METHOD_INTERNAL gboolean nm_remote_settings_reload_connections (NMRemoteSettings *settings, GCancellable *cancellable, |