mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-08 05:28:07 +02:00
libnm: refactor name-owner check for object-manager
This commit is contained in:
parent
a73e73eae1
commit
196bae36bb
1 changed files with 14 additions and 12 deletions
|
|
@ -2274,13 +2274,23 @@ objects_created (NMClient *client, GDBusObjectManager *object_manager, GError **
|
||||||
|
|
||||||
static void name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data);
|
static void name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data);
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
_om_has_name_owner (GDBusObjectManager *object_manager)
|
||||||
|
{
|
||||||
|
gs_free char *name_owner = NULL;
|
||||||
|
|
||||||
|
nm_assert (G_IS_DBUS_OBJECT_MANAGER_CLIENT (object_manager));
|
||||||
|
|
||||||
|
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (object_manager));
|
||||||
|
return !!name_owner;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
init_sync (GInitable *initable, GCancellable *cancellable, GError **error)
|
init_sync (GInitable *initable, GCancellable *cancellable, GError **error)
|
||||||
{
|
{
|
||||||
NMClient *client = NM_CLIENT (initable);
|
NMClient *client = NM_CLIENT (initable);
|
||||||
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client);
|
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client);
|
||||||
GList *objects, *iter;
|
GList *objects, *iter;
|
||||||
gchar *name_owner;
|
|
||||||
|
|
||||||
priv->object_manager = g_dbus_object_manager_client_new_for_bus_sync (_nm_dbus_bus_type (),
|
priv->object_manager = g_dbus_object_manager_client_new_for_bus_sync (_nm_dbus_bus_type (),
|
||||||
G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START,
|
G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START,
|
||||||
|
|
@ -2292,9 +2302,7 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error)
|
||||||
if (!priv->object_manager)
|
if (!priv->object_manager)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (priv->object_manager));
|
if (_om_has_name_owner (priv->object_manager)) {
|
||||||
if (name_owner) {
|
|
||||||
g_free (name_owner);
|
|
||||||
if (!objects_created (client, priv->object_manager, error))
|
if (!objects_created (client, priv->object_manager, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
|
@ -2420,7 +2428,6 @@ got_object_manager (GObject *object, GAsyncResult *result, gpointer user_data)
|
||||||
NMClient *client;
|
NMClient *client;
|
||||||
NMClientPrivate *priv;
|
NMClientPrivate *priv;
|
||||||
GList *objects, *iter;
|
GList *objects, *iter;
|
||||||
gchar *name_owner;
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GDBusObjectManager *object_manager;
|
GDBusObjectManager *object_manager;
|
||||||
|
|
||||||
|
|
@ -2435,9 +2442,7 @@ got_object_manager (GObject *object, GAsyncResult *result, gpointer user_data)
|
||||||
priv = NM_CLIENT_GET_PRIVATE (client);
|
priv = NM_CLIENT_GET_PRIVATE (client);
|
||||||
priv->object_manager = object_manager;
|
priv->object_manager = object_manager;
|
||||||
|
|
||||||
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (priv->object_manager));
|
if (_om_has_name_owner (priv->object_manager)) {
|
||||||
if (name_owner) {
|
|
||||||
g_free (name_owner);
|
|
||||||
if (!objects_created (client, priv->object_manager, &error)) {
|
if (!objects_created (client, priv->object_manager, &error)) {
|
||||||
g_simple_async_result_take_error (init_data->result, error);
|
g_simple_async_result_take_error (init_data->result, error);
|
||||||
init_async_complete (init_data);
|
init_async_complete (init_data);
|
||||||
|
|
@ -2497,13 +2502,10 @@ name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data)
|
||||||
NMClient *self = user_data;
|
NMClient *self = user_data;
|
||||||
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (self);
|
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (self);
|
||||||
GDBusObjectManager *object_manager = G_DBUS_OBJECT_MANAGER (object);
|
GDBusObjectManager *object_manager = G_DBUS_OBJECT_MANAGER (object);
|
||||||
gchar *name_owner;
|
|
||||||
|
|
||||||
nm_assert (object_manager == priv->object_manager);
|
nm_assert (object_manager == priv->object_manager);
|
||||||
|
|
||||||
name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (object));
|
if (_om_has_name_owner (object_manager)) {
|
||||||
if (name_owner) {
|
|
||||||
g_free (name_owner);
|
|
||||||
g_clear_object (&priv->object_manager);
|
g_clear_object (&priv->object_manager);
|
||||||
nm_clear_g_cancellable (&priv->new_object_manager_cancellable);
|
nm_clear_g_cancellable (&priv->new_object_manager_cancellable);
|
||||||
priv->new_object_manager_cancellable = g_cancellable_new ();
|
priv->new_object_manager_cancellable = g_cancellable_new ();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue