about summary refs log tree commit diff
path: root/libnm-glib/nm-ip6-config.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-glib/nm-ip6-config.c')
-rw-r--r--libnm-glib/nm-ip6-config.c123
1 files changed, 22 insertions, 101 deletions
diff --git a/libnm-glib/nm-ip6-config.c b/libnm-glib/nm-ip6-config.c
index 7e9bf3cd..c9a26279 100644
--- a/libnm-glib/nm-ip6-config.c
+++ b/libnm-glib/nm-ip6-config.c
@@ -124,20 +124,20 @@ demarshal_ip6_routes_array (NMObject *object, GParamSpec *pspec, GValue *value,
 }
 
 static void
-register_for_property_changed (NMIP6Config *config)
+register_properties (NMIP6Config *config)
 {
 	NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config);
-	const NMPropertiesChangedInfo property_changed_info[] = {
-		{ NM_IP6_CONFIG_ADDRESSES,    demarshal_ip6_address_array,    &priv->addresses },
-		{ NM_IP6_CONFIG_NAMESERVERS,  demarshal_ip6_nameserver_array, &priv->nameservers },
-		{ NM_IP6_CONFIG_DOMAINS,      demarshal_domains,              &priv->domains },
-		{ NM_IP6_CONFIG_ROUTES,       demarshal_ip6_routes_array,     &priv->routes },
+	const NMPropertiesInfo property_info[] = {
+		{ NM_IP6_CONFIG_ADDRESSES,    &priv->addresses, demarshal_ip6_address_array },
+		{ NM_IP6_CONFIG_NAMESERVERS,  &priv->nameservers, demarshal_ip6_nameserver_array },
+		{ NM_IP6_CONFIG_DOMAINS,      &priv->domains, demarshal_domains },
+		{ NM_IP6_CONFIG_ROUTES,       &priv->routes, demarshal_ip6_routes_array },
 		{ NULL },
 	};
 
-	_nm_object_handle_properties_changed (NM_OBJECT (config),
-	                                      priv->proxy,
-	                                      property_changed_info);
+	_nm_object_register_properties (NM_OBJECT (config),
+	                                priv->proxy,
+	                                property_info);
 }
 
 /**
@@ -153,27 +153,10 @@ register_for_property_changed (NMIP6Config *config)
 const GSList *
 nm_ip6_config_get_addresses (NMIP6Config *config)
 {
-	NMIP6ConfigPrivate *priv;
-	GValue value = { 0, };
-
 	g_return_val_if_fail (NM_IS_IP6_CONFIG (config), NULL);
 
-	priv = NM_IP6_CONFIG_GET_PRIVATE (config);
-	if (priv->addresses)
-		return priv->addresses;
-
-	if (!_nm_object_get_property (NM_OBJECT (config),
-	                              NM_DBUS_INTERFACE_IP6_CONFIG,
-	                              "Addresses",
-	                              &value,
-	                              NULL)) {
-		return NULL;
-	}
-
-	demarshal_ip6_address_array (NM_OBJECT (config), NULL, &value, &priv->addresses);	
-	g_value_unset (&value);
-
-	return priv->addresses;
+	_nm_object_ensure_inited (NM_OBJECT (config));
+	return NM_IP6_CONFIG_GET_PRIVATE (config)->addresses;
 }
 
 /* FIXME: like in libnm_util, in6_addr is not introspectable, so skipping here */
@@ -190,29 +173,10 @@ nm_ip6_config_get_addresses (NMIP6Config *config)
 const GSList *
 nm_ip6_config_get_nameservers (NMIP6Config *config)
 {
-	NMIP6ConfigPrivate *priv;
-	GParamSpec *pspec;
-	GValue value = {0,};
-
 	g_return_val_if_fail (NM_IS_IP6_CONFIG (config), NULL);
 
-	priv = NM_IP6_CONFIG_GET_PRIVATE (config);
-	if (priv->nameservers)
-		return priv->nameservers;
-
-	if (!_nm_object_get_property (NM_OBJECT (config),
-	                              NM_DBUS_INTERFACE_IP6_CONFIG,
-	                              "Nameservers",
-	                              &value,
-	                              NULL)) {
-		return NULL;
-	}
-
-	pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (config)), NM_IP6_CONFIG_NAMESERVERS);
-	demarshal_ip6_nameserver_array (NM_OBJECT (config), pspec, &value, &priv->nameservers);
-	g_value_unset (&value);
-
-	return priv->nameservers;
+	_nm_object_ensure_inited (NM_OBJECT (config));
+	return NM_IP6_CONFIG_GET_PRIVATE (config)->nameservers;
 }
 
 /**
@@ -227,27 +191,10 @@ nm_ip6_config_get_nameservers (NMIP6Config *config)
 const GPtrArray *
 nm_ip6_config_get_domains (NMIP6Config *config)
 {
-	NMIP6ConfigPrivate *priv;
-	GValue value = {0,};
-
 	g_return_val_if_fail (NM_IS_IP6_CONFIG (config), NULL);
 
-	priv = NM_IP6_CONFIG_GET_PRIVATE (config);
-	if (priv->domains)
-		return handle_ptr_array_return (priv->domains);
-
-	if (!_nm_object_get_property (NM_OBJECT (config),
-	                              NM_DBUS_INTERFACE_IP6_CONFIG,
-	                              "Domains",
-	                              &value,
-	                              NULL)) {
-		return NULL;
-	}
-
-	demarshal_domains (NM_OBJECT (config), NULL, &value, &priv->domains);
-	g_value_unset (&value);
-
-	return handle_ptr_array_return (priv->domains);
+	_nm_object_ensure_inited (NM_OBJECT (config));
+	return handle_ptr_array_return (NM_IP6_CONFIG_GET_PRIVATE (config)->domains);
 }
 
 /**
@@ -263,43 +210,19 @@ nm_ip6_config_get_domains (NMIP6Config *config)
 const GSList *
 nm_ip6_config_get_routes (NMIP6Config *config)
 {
-	NMIP6ConfigPrivate *priv;
-	GValue value = { 0, };
-
 	g_return_val_if_fail (NM_IS_IP6_CONFIG (config), NULL);
 
-	priv = NM_IP6_CONFIG_GET_PRIVATE (config);
-	if (priv->routes)
-		return priv->routes;
-
-	if (!_nm_object_get_property (NM_OBJECT (config),
-	                              NM_DBUS_INTERFACE_IP6_CONFIG,
-	                              "Routes",
-	                              &value,
-	                              NULL)) {
-		return NULL;
-	}
-
-	demarshal_ip6_routes_array (NM_OBJECT (config), NULL, &value, &priv->routes);
-	g_value_unset (&value);
-
-	return priv->routes;
+	_nm_object_ensure_inited (NM_OBJECT (config));
+	return NM_IP6_CONFIG_GET_PRIVATE (config)->routes;
 }
 
-static GObject*
-constructor (GType type,
-             guint n_construct_params,
-             GObjectConstructParam *construct_params)
+static void
+constructed (GObject *object)
 {
-	GObject *object;
 	DBusGConnection *connection;
 	NMIP6ConfigPrivate *priv;
 
-	object = G_OBJECT_CLASS (nm_ip6_config_parent_class)->constructor (type,
-	                                                                   n_construct_params,
-	                                                                   construct_params);
-	if (!object)
-		return NULL;
+	G_OBJECT_CLASS (nm_ip6_config_parent_class)->constructed (object);
 
 	priv = NM_IP6_CONFIG_GET_PRIVATE (object);
 	connection = nm_object_get_connection (NM_OBJECT (object));
@@ -309,9 +232,7 @@ constructor (GType type,
 	                                         nm_object_get_path (NM_OBJECT (object)),
 	                                         NM_DBUS_INTERFACE_IP6_CONFIG);
 
-	register_for_property_changed (NM_IP6_CONFIG (object));
-
-	return object;
+	register_properties (NM_IP6_CONFIG (object));
 }
 
 static void
@@ -379,7 +300,7 @@ nm_ip6_config_class_init (NMIP6ConfigClass *config_class)
 	g_type_class_add_private (config_class, sizeof (NMIP6ConfigPrivate));
 
 	/* virtual methods */
-	object_class->constructor = constructor;
+	object_class->constructed = constructed;
 	object_class->get_property = get_property;
 	object_class->finalize = finalize;