mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-05 10:20:14 +01:00
libnm-glib: add service-running property to NMRemoteSettings
So that users can actually tell if the remote service is running or not. It doesn't have to be when the object is created.
This commit is contained in:
parent
d548fc9a61
commit
ac03cbce04
2 changed files with 34 additions and 2 deletions
|
|
@ -45,6 +45,7 @@ typedef struct {
|
|||
DBusGProxy *proxy;
|
||||
GHashTable *connections;
|
||||
GHashTable *pending; /* Connections we don't have settings for yet */
|
||||
gboolean service_running;
|
||||
|
||||
DBusGProxy *dbus_proxy;
|
||||
|
||||
|
|
@ -57,6 +58,7 @@ enum {
|
|||
PROP_0,
|
||||
PROP_BUS,
|
||||
PROP_SCOPE,
|
||||
PROP_SERVICE_RUNNING,
|
||||
|
||||
LAST_PROP
|
||||
};
|
||||
|
|
@ -283,10 +285,14 @@ name_owner_changed (DBusGProxy *proxy,
|
|||
if (priv->fetch_id)
|
||||
g_source_remove (priv->fetch_id);
|
||||
|
||||
if (new_owner && strlen (new_owner) > 0)
|
||||
if (new_owner && strlen (new_owner) > 0) {
|
||||
priv->fetch_id = g_idle_add (fetch_connections, self);
|
||||
else
|
||||
priv->service_running = TRUE;
|
||||
} else {
|
||||
priv->fetch_id = g_idle_add (remove_connections, self);
|
||||
priv->service_running = FALSE;
|
||||
}
|
||||
g_object_notify (G_OBJECT (self), NM_REMOTE_SETTINGS_SERVICE_RUNNING);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -339,6 +345,7 @@ constructor (GType type,
|
|||
GObject *object;
|
||||
NMRemoteSettingsPrivate *priv;
|
||||
const char *service = NM_DBUS_SERVICE_USER_SETTINGS;
|
||||
GError *error = NULL;
|
||||
|
||||
object = G_OBJECT_CLASS (nm_remote_settings_parent_class)->constructor (type, n_construct_params, construct_params);
|
||||
if (!object)
|
||||
|
|
@ -369,6 +376,19 @@ constructor (GType type,
|
|||
if (priv->scope == NM_CONNECTION_SCOPE_SYSTEM)
|
||||
service = NM_DBUS_SERVICE_SYSTEM_SETTINGS;
|
||||
|
||||
if (!dbus_g_proxy_call (priv->dbus_proxy, "NameHasOwner", &error,
|
||||
G_TYPE_STRING, service,
|
||||
G_TYPE_INVALID,
|
||||
G_TYPE_BOOLEAN, &priv->service_running,
|
||||
G_TYPE_INVALID)) {
|
||||
g_warning ("%s (NMRemoteSettings) error getting remote settings service status: (%d) %s\n",
|
||||
__func__,
|
||||
error ? error->code : -1,
|
||||
error && error->message ? error->message : "(unknown)");
|
||||
g_error_free (error);
|
||||
priv->service_running = FALSE;
|
||||
}
|
||||
|
||||
priv->proxy = dbus_g_proxy_new_for_name (priv->bus,
|
||||
service,
|
||||
NM_DBUS_PATH_SETTINGS,
|
||||
|
|
@ -447,6 +467,9 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_SCOPE:
|
||||
g_value_set_uint (value, priv->scope);
|
||||
break;
|
||||
case PROP_SERVICE_RUNNING:
|
||||
g_value_set_boolean (value, priv->service_running);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -484,5 +507,13 @@ nm_remote_settings_class_init (NMRemoteSettingsClass *class)
|
|||
NM_CONNECTION_SCOPE_USER,
|
||||
NM_CONNECTION_SCOPE_USER,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_SERVICE_RUNNING,
|
||||
g_param_spec_boolean (NM_REMOTE_SETTINGS_SERVICE_RUNNING,
|
||||
"Service running",
|
||||
"Is service running",
|
||||
FALSE,
|
||||
G_PARAM_READABLE));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ G_BEGIN_DECLS
|
|||
|
||||
#define NM_REMOTE_SETTINGS_BUS "bus"
|
||||
#define NM_REMOTE_SETTINGS_SCOPE "scope"
|
||||
#define NM_REMOTE_SETTINGS_SERVICE_RUNNING "service-running"
|
||||
|
||||
typedef struct {
|
||||
GObject parent;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue