diff --git a/libnm-glib/nm-access-point.c b/libnm-glib/nm-access-point.c index 2a5d20c27..9a2536520 100644 --- a/libnm-glib/nm-access-point.c +++ b/libnm-glib/nm-access-point.c @@ -113,19 +113,10 @@ nm_access_point_new (DBusGConnection *connection, const char *path) NM80211ApFlags nm_access_point_get_flags (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NM_802_11_AP_FLAGS_NONE); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->flags) { - priv->flags = _nm_object_get_uint_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_FLAGS, - NULL); - } - - return priv->flags; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->flags; } /** @@ -139,19 +130,10 @@ nm_access_point_get_flags (NMAccessPoint *ap) NM80211ApSecurityFlags nm_access_point_get_wpa_flags (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NM_802_11_AP_SEC_NONE); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->wpa_flags) { - priv->wpa_flags = _nm_object_get_uint_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_WPA_FLAGS, - NULL); - } - - return priv->wpa_flags; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->wpa_flags; } /** @@ -166,19 +148,10 @@ nm_access_point_get_wpa_flags (NMAccessPoint *ap) NM80211ApSecurityFlags nm_access_point_get_rsn_flags (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NM_802_11_AP_SEC_NONE); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->rsn_flags) { - priv->rsn_flags = _nm_object_get_uint_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_RSN_FLAGS, - NULL); - } - - return priv->rsn_flags; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->rsn_flags; } /** @@ -193,19 +166,10 @@ nm_access_point_get_rsn_flags (NMAccessPoint *ap) const GByteArray * nm_access_point_get_ssid (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->ssid) { - priv->ssid = _nm_object_get_byte_array_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_SSID, - NULL); - } - - return priv->ssid; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->ssid; } /** @@ -219,19 +183,10 @@ nm_access_point_get_ssid (NMAccessPoint *ap) guint32 nm_access_point_get_frequency (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->frequency) { - priv->frequency = _nm_object_get_uint_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_FREQUENCY, - NULL); - } - - return priv->frequency; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->frequency; } /** @@ -246,19 +201,10 @@ nm_access_point_get_frequency (NMAccessPoint *ap) const char * nm_access_point_get_bssid (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->bssid) { - priv->bssid = _nm_object_get_string_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_HW_ADDRESS, - NULL); - } - - return priv->bssid; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->bssid; } /** @@ -289,19 +235,10 @@ nm_access_point_get_hw_address (NMAccessPoint *ap) NM80211Mode nm_access_point_get_mode (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->mode) { - priv->mode = _nm_object_get_uint_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_MODE, - NULL); - } - - return priv->mode; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->mode; } /** @@ -315,19 +252,10 @@ nm_access_point_get_mode (NMAccessPoint *ap) guint32 nm_access_point_get_max_bitrate (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->max_bitrate) { - priv->max_bitrate = _nm_object_get_uint_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_MAX_BITRATE, - NULL); - } - - return priv->max_bitrate; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->max_bitrate; } /** @@ -341,19 +269,10 @@ nm_access_point_get_max_bitrate (NMAccessPoint *ap) guint8 nm_access_point_get_strength (NMAccessPoint *ap) { - NMAccessPointPrivate *priv; - g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0); - priv = NM_ACCESS_POINT_GET_PRIVATE (ap); - if (!priv->strength) { - priv->strength = _nm_object_get_byte_property (NM_OBJECT (ap), - NM_DBUS_INTERFACE_ACCESS_POINT, - DBUS_PROP_STRENGTH, - NULL); - } - - return priv->strength; + _nm_object_ensure_inited (NM_OBJECT (ap)); + return NM_ACCESS_POINT_GET_PRIVATE (ap)->strength; } /** diff --git a/libnm-glib/nm-active-connection.c b/libnm-glib/nm-active-connection.c index 2c37e711e..a68da56b6 100644 --- a/libnm-glib/nm-active-connection.c +++ b/libnm-glib/nm-active-connection.c @@ -107,19 +107,10 @@ nm_active_connection_new (DBusGConnection *connection, const char *path) const char * nm_active_connection_get_connection (NMActiveConnection *connection) { - NMActiveConnectionPrivate *priv; - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (connection); - if (!priv->connection) { - priv->connection = _nm_object_get_string_property (NM_OBJECT (connection), - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - DBUS_PROP_CONNECTION, - NULL); - } - - return priv->connection; + _nm_object_ensure_inited (NM_OBJECT (connection)); + return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->connection; } /** @@ -134,19 +125,10 @@ nm_active_connection_get_connection (NMActiveConnection *connection) const char * nm_active_connection_get_uuid (NMActiveConnection *connection) { - NMActiveConnectionPrivate *priv; - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (connection); - if (!priv->uuid) { - priv->uuid = _nm_object_get_string_property (NM_OBJECT (connection), - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - DBUS_PROP_UUID, - NULL); - } - - return priv->uuid; + _nm_object_ensure_inited (NM_OBJECT (connection)); + return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->uuid; } /** @@ -161,19 +143,10 @@ nm_active_connection_get_uuid (NMActiveConnection *connection) const char * nm_active_connection_get_specific_object (NMActiveConnection *connection) { - NMActiveConnectionPrivate *priv; - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (connection); - if (!priv->specific_object) { - priv->specific_object = _nm_object_get_string_property (NM_OBJECT (connection), - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - DBUS_PROP_SPECIFIC_OBJECT, - NULL); - } - - return priv->specific_object; + _nm_object_ensure_inited (NM_OBJECT (connection)); + return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->specific_object; } /** @@ -188,27 +161,10 @@ nm_active_connection_get_specific_object (NMActiveConnection *connection) const GPtrArray * nm_active_connection_get_devices (NMActiveConnection *connection) { - NMActiveConnectionPrivate *priv; - GValue value = { 0, }; - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (connection); - if (priv->devices) - return handle_ptr_array_return (priv->devices); - - if (!_nm_object_get_property (NM_OBJECT (connection), - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - DBUS_PROP_DEVICES, - &value, - NULL)) { - return NULL; - } - - demarshal_devices (NM_OBJECT (connection), NULL, &value, &priv->devices); - g_value_unset (&value); - - return handle_ptr_array_return (priv->devices); + _nm_object_ensure_inited (NM_OBJECT (connection)); + return handle_ptr_array_return (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->devices); } /** @@ -222,19 +178,10 @@ nm_active_connection_get_devices (NMActiveConnection *connection) NMActiveConnectionState nm_active_connection_get_state (NMActiveConnection *connection) { - NMActiveConnectionPrivate *priv; - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NM_ACTIVE_CONNECTION_STATE_UNKNOWN); - priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (connection); - if (!priv->state) { - priv->state = _nm_object_get_uint_property (NM_OBJECT (connection), - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - DBUS_PROP_STATE, - NULL); - } - - return priv->state; + _nm_object_ensure_inited (NM_OBJECT (connection)); + return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->state; } /** @@ -249,19 +196,10 @@ nm_active_connection_get_state (NMActiveConnection *connection) gboolean nm_active_connection_get_default (NMActiveConnection *connection) { - NMActiveConnectionPrivate *priv; - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), FALSE); - priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (connection); - if (!priv->is_default) { - priv->is_default = _nm_object_get_boolean_property (NM_OBJECT (connection), - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - DBUS_PROP_DEFAULT, - NULL); - } - - return priv->is_default; + _nm_object_ensure_inited (NM_OBJECT (connection)); + return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->is_default; } /** @@ -276,19 +214,10 @@ nm_active_connection_get_default (NMActiveConnection *connection) gboolean nm_active_connection_get_default6 (NMActiveConnection *connection) { - NMActiveConnectionPrivate *priv; - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), FALSE); - priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (connection); - if (!priv->is_default6) { - priv->is_default6 = _nm_object_get_boolean_property (NM_OBJECT (connection), - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - DBUS_PROP_DEFAULT6, - NULL); - } - - return priv->is_default6; + _nm_object_ensure_inited (NM_OBJECT (connection)); + return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->is_default6; } /** @@ -303,19 +232,10 @@ nm_active_connection_get_default6 (NMActiveConnection *connection) const char * nm_active_connection_get_master (NMActiveConnection *connection) { - NMActiveConnectionPrivate *priv; - g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (connection); - if (!priv->master) { - priv->master = _nm_object_get_string_property (NM_OBJECT (connection), - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - DBUS_PROP_MASTER, - NULL); - } - - return priv->master; + _nm_object_ensure_inited (NM_OBJECT (connection)); + return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->master; } static void diff --git a/libnm-glib/nm-client.c b/libnm-glib/nm-client.c index 42517c8fc..9bf8bcb3e 100644 --- a/libnm-glib/nm-client.c +++ b/libnm-glib/nm-client.c @@ -62,7 +62,6 @@ typedef struct { */ GSList *pending_activations; - gboolean have_networking_enabled; gboolean networking_enabled; gboolean wireless_enabled; gboolean wireless_hw_enabled; @@ -110,18 +109,6 @@ static void proxy_name_owner_changed (DBusGProxy *proxy, static void client_device_added_proxy (DBusGProxy *proxy, char *path, gpointer user_data); static void client_device_removed_proxy (DBusGProxy *proxy, char *path, gpointer user_data); -static void -handle_net_enabled_changed (GObject *object, - GParamSpec *pspec, - GValue *value, - gpointer user_data) -{ - NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (object); - - /* Update the cache flag when it changes */ - priv->have_networking_enabled = TRUE; -} - static void nm_client_init (NMClient *client) { @@ -130,11 +117,6 @@ nm_client_init (NMClient *client) priv->state = NM_STATE_UNKNOWN; priv->permissions = g_hash_table_new (g_direct_hash, g_direct_equal); - - g_signal_connect (client, - "notify::" NM_CLIENT_NETWORKING_ENABLED, - G_CALLBACK (handle_net_enabled_changed), - client); } static void @@ -155,29 +137,29 @@ static void update_wireless_status (NMClient *client, gboolean notify) { NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client); - gboolean val; + gboolean oldval; gboolean poke = FALSE; - val = _nm_object_get_boolean_property (NM_OBJECT (client), - NM_DBUS_INTERFACE, - "WirelessHardwareEnabled", - NULL); - if (val != priv->wireless_hw_enabled) { - priv->wireless_hw_enabled = val; + oldval = priv->wireless_hw_enabled; + _nm_object_reload_property (NM_OBJECT (client), + NM_DBUS_INTERFACE, + "WirelessHardwareEnabled"); + if (oldval != priv->wireless_hw_enabled) { poke = TRUE; if (notify) _nm_object_queue_notify (NM_OBJECT (client), NM_CLIENT_WIRELESS_HARDWARE_ENABLED); } - if (priv->wireless_hw_enabled == FALSE) - val = FALSE; - else - val = _nm_object_get_boolean_property (NM_OBJECT (client), - NM_DBUS_INTERFACE, - "WirelessEnabled", - NULL); - if (val != priv->wireless_enabled) { - priv->wireless_enabled = val; + oldval = priv->wireless_enabled; + if (priv->wireless_hw_enabled == FALSE) { + priv->wireless_enabled = FALSE; + } else { + _nm_object_reload_property (NM_OBJECT (client), + NM_DBUS_INTERFACE, + "WirelessEnabled"); + } + + if (oldval != priv->wireless_enabled) { poke = TRUE; if (notify) _nm_object_queue_notify (NM_OBJECT (client), NM_CLIENT_WIRELESS_ENABLED); @@ -197,29 +179,27 @@ static void update_wwan_status (NMClient *client, gboolean notify) { NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client); - gboolean val; + gboolean oldval; - val = _nm_object_get_boolean_property (NM_OBJECT (client), - NM_DBUS_INTERFACE, - "WwanHardwareEnabled", - NULL); - if (val != priv->wwan_hw_enabled) { - priv->wwan_hw_enabled = val; + oldval = priv->wwan_hw_enabled; + _nm_object_reload_property (NM_OBJECT (client), + NM_DBUS_INTERFACE, + "WwanHardwareEnabled"); + if (oldval != priv->wwan_hw_enabled) { if (notify) _nm_object_queue_notify (NM_OBJECT (client), NM_CLIENT_WWAN_HARDWARE_ENABLED); } - if (priv->wwan_hw_enabled == FALSE) - val = FALSE; - else { - val = _nm_object_get_boolean_property (NM_OBJECT (client), - NM_DBUS_INTERFACE, - "WwanEnabled", - NULL); + oldval = priv->wwan_enabled; + if (priv->wwan_hw_enabled == FALSE) { + priv->wwan_enabled = FALSE; + } else { + _nm_object_reload_property (NM_OBJECT (client), + NM_DBUS_INTERFACE, + "WwanEnabled"); } - if (val != priv->wwan_enabled) { - priv->wwan_enabled = val; + if (oldval != priv->wwan_enabled) { if (notify) _nm_object_queue_notify (NM_OBJECT (client), NM_CLIENT_WWAN_ENABLED); } @@ -229,29 +209,27 @@ static void update_wimax_status (NMClient *client, gboolean notify) { NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client); - gboolean val; + gboolean oldval; - val = _nm_object_get_boolean_property (NM_OBJECT (client), - NM_DBUS_INTERFACE, - "WimaxHardwareEnabled", - NULL); - if (val != priv->wimax_hw_enabled) { - priv->wimax_hw_enabled = val; + oldval = priv->wimax_hw_enabled; + _nm_object_reload_property (NM_OBJECT (client), + NM_DBUS_INTERFACE, + "WimaxHardwareEnabled"); + if (oldval != priv->wimax_hw_enabled) { if (notify) _nm_object_queue_notify (NM_OBJECT (client), NM_CLIENT_WIMAX_HARDWARE_ENABLED); } + oldval = priv->wimax_enabled; if (priv->wimax_hw_enabled == FALSE) - val = FALSE; + priv->wimax_enabled = FALSE; else { - val = _nm_object_get_boolean_property (NM_OBJECT (client), - NM_DBUS_INTERFACE, - "WimaxEnabled", - NULL); + _nm_object_reload_property (NM_OBJECT (client), + NM_DBUS_INTERFACE, + "WimaxEnabled"); } - if (val != priv->wimax_enabled) { - priv->wimax_enabled = val; + if (oldval != priv->wimax_enabled) { if (notify) _nm_object_queue_notify (NM_OBJECT (client), NM_CLIENT_WIMAX_ENABLED); } @@ -877,28 +855,14 @@ const GPtrArray * nm_client_get_active_connections (NMClient *client) { NMClientPrivate *priv; - GValue value = { 0, }; g_return_val_if_fail (NM_IS_CLIENT (client), NULL); priv = NM_CLIENT_GET_PRIVATE (client); - if (priv->active_connections) - return handle_ptr_array_return (priv->active_connections); - if (!priv->manager_running) return NULL; - if (!_nm_object_get_property (NM_OBJECT (client), - "org.freedesktop.NetworkManager", - "ActiveConnections", - &value, - NULL)) { - return NULL; - } - - demarshal_active_connections (NM_OBJECT (client), NULL, &value, &priv->active_connections); - g_value_unset (&value); - + _nm_object_ensure_inited (NM_OBJECT (client)); return handle_ptr_array_return (priv->active_connections); } @@ -915,6 +879,7 @@ nm_client_wireless_get_enabled (NMClient *client) { g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); + _nm_object_ensure_inited (NM_OBJECT (client)); return NM_CLIENT_GET_PRIVATE (client)->wireless_enabled; } @@ -954,6 +919,7 @@ nm_client_wireless_hardware_get_enabled (NMClient *client) { g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); + _nm_object_ensure_inited (NM_OBJECT (client)); return NM_CLIENT_GET_PRIVATE (client)->wireless_hw_enabled; } @@ -970,6 +936,7 @@ nm_client_wwan_get_enabled (NMClient *client) { g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); + _nm_object_ensure_inited (NM_OBJECT (client)); return NM_CLIENT_GET_PRIVATE (client)->wwan_enabled; } @@ -1009,6 +976,7 @@ nm_client_wwan_hardware_get_enabled (NMClient *client) { g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); + _nm_object_ensure_inited (NM_OBJECT (client)); return NM_CLIENT_GET_PRIVATE (client)->wwan_hw_enabled; } @@ -1025,6 +993,7 @@ nm_client_wimax_get_enabled (NMClient *client) { g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); + _nm_object_ensure_inited (NM_OBJECT (client)); return NM_CLIENT_GET_PRIVATE (client)->wimax_enabled; } @@ -1064,6 +1033,7 @@ nm_client_wimax_hardware_get_enabled (NMClient *client) { g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); + _nm_object_ensure_inited (NM_OBJECT (client)); return NM_CLIENT_GET_PRIVATE (client)->wimax_hw_enabled; } @@ -1079,7 +1049,6 @@ const char * nm_client_get_version (NMClient *client) { NMClientPrivate *priv; - GError *err = NULL; g_return_val_if_fail (NM_IS_CLIENT (client), NULL); @@ -1088,13 +1057,7 @@ nm_client_get_version (NMClient *client) if (!priv->manager_running) return NULL; - if (!priv->version) - priv->version = _nm_object_get_string_property (NM_OBJECT (client), NM_DBUS_INTERFACE, "Version", &err); - - /* TODO: we don't pass the error to the caller yet, maybe later */ - if (err) - g_error_free (err); - + _nm_object_ensure_inited (NM_OBJECT (client)); return priv->version; } @@ -1118,9 +1081,7 @@ nm_client_get_state (NMClient *client) if (!priv->manager_running) return NM_STATE_UNKNOWN; - if (priv->state == NM_STATE_UNKNOWN) - priv->state = _nm_object_get_uint_property (NM_OBJECT (client), NM_DBUS_INTERFACE, "State", NULL); - + _nm_object_ensure_inited (NM_OBJECT (client)); return priv->state; } @@ -1135,23 +1096,10 @@ nm_client_get_state (NMClient *client) gboolean nm_client_networking_get_enabled (NMClient *client) { - NMClientPrivate *priv; - g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); - priv = NM_CLIENT_GET_PRIVATE (client); - if (!priv->have_networking_enabled) { - priv = NM_CLIENT_GET_PRIVATE (client); - if (!priv->networking_enabled) { - priv->networking_enabled = _nm_object_get_boolean_property (NM_OBJECT (client), - NM_DBUS_INTERFACE, - "NetworkingEnabled", - NULL); - priv->have_networking_enabled = TRUE; - } - } - - return priv->networking_enabled; + _nm_object_ensure_inited (NM_OBJECT (client)); + return NM_CLIENT_GET_PRIVATE (client)->networking_enabled; } /** diff --git a/libnm-glib/nm-device-bt.c b/libnm-glib/nm-device-bt.c index 960f8ce1c..4c9f95511 100644 --- a/libnm-glib/nm-device-bt.c +++ b/libnm-glib/nm-device-bt.c @@ -42,7 +42,6 @@ typedef struct { char *hw_address; char *name; guint32 bt_capabilities; - gboolean bt_capabilities_valid; gboolean disposed; } NMDeviceBtPrivate; @@ -93,19 +92,10 @@ nm_device_bt_new (DBusGConnection *connection, const char *path) const char * nm_device_bt_get_hw_address (NMDeviceBt *device) { - NMDeviceBtPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_BT (device), NULL); - priv = NM_DEVICE_BT_GET_PRIVATE (device); - if (!priv->hw_address) { - priv->hw_address = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_BLUETOOTH, - DBUS_PROP_HW_ADDRESS, - NULL); - } - - return priv->hw_address; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_BT_GET_PRIVATE (device)->hw_address; } /** @@ -119,19 +109,10 @@ nm_device_bt_get_hw_address (NMDeviceBt *device) const char * nm_device_bt_get_name (NMDeviceBt *device) { - NMDeviceBtPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_BT (device), NULL); - priv = NM_DEVICE_BT_GET_PRIVATE (device); - if (!priv->name) { - priv->name = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_BLUETOOTH, - DBUS_PROP_NAME, - NULL); - } - - return priv->name; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_BT_GET_PRIVATE (device)->name; } /** @@ -145,20 +126,10 @@ nm_device_bt_get_name (NMDeviceBt *device) NMBluetoothCapabilities nm_device_bt_get_capabilities (NMDeviceBt *device) { - NMDeviceBtPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_BT (device), NM_BT_CAPABILITY_NONE); - priv = NM_DEVICE_BT_GET_PRIVATE (device); - if (!priv->bt_capabilities_valid) { - priv->bt_capabilities = _nm_object_get_uint_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_BLUETOOTH, - DBUS_PROP_BT_CAPABILITIES, - NULL); - priv->bt_capabilities_valid = TRUE; - } - - return priv->bt_capabilities; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_BT_GET_PRIVATE (device)->bt_capabilities; } static NMBluetoothCapabilities diff --git a/libnm-glib/nm-device-ethernet.c b/libnm-glib/nm-device-ethernet.c index 1eb81890c..c043113e7 100644 --- a/libnm-glib/nm-device-ethernet.c +++ b/libnm-glib/nm-device-ethernet.c @@ -44,7 +44,6 @@ typedef struct { char *perm_hw_address; guint32 speed; gboolean carrier; - gboolean carrier_valid; gboolean disposed; } NMDeviceEthernetPrivate; @@ -97,19 +96,10 @@ nm_device_ethernet_new (DBusGConnection *connection, const char *path) const char * nm_device_ethernet_get_hw_address (NMDeviceEthernet *device) { - NMDeviceEthernetPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), NULL); - priv = NM_DEVICE_ETHERNET_GET_PRIVATE (device); - if (!priv->hw_address) { - priv->hw_address = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRED, - DBUS_PROP_HW_ADDRESS, - NULL); - } - - return priv->hw_address; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_ETHERNET_GET_PRIVATE (device)->hw_address; } /** @@ -124,19 +114,10 @@ nm_device_ethernet_get_hw_address (NMDeviceEthernet *device) const char * nm_device_ethernet_get_permanent_hw_address (NMDeviceEthernet *device) { - NMDeviceEthernetPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), NULL); - priv = NM_DEVICE_ETHERNET_GET_PRIVATE (device); - if (!priv->perm_hw_address) { - priv->perm_hw_address = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRED, - DBUS_PROP_PERM_HW_ADDRESS, - NULL); - } - - return priv->perm_hw_address; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_ETHERNET_GET_PRIVATE (device)->perm_hw_address; } /** @@ -150,19 +131,10 @@ nm_device_ethernet_get_permanent_hw_address (NMDeviceEthernet *device) guint32 nm_device_ethernet_get_speed (NMDeviceEthernet *device) { - NMDeviceEthernetPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), 0); - priv = NM_DEVICE_ETHERNET_GET_PRIVATE (device); - if (!priv->speed) { - priv->speed = _nm_object_get_uint_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRED, - DBUS_PROP_SPEED, - NULL); - } - - return priv->speed; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_ETHERNET_GET_PRIVATE (device)->speed; } /** @@ -176,20 +148,10 @@ nm_device_ethernet_get_speed (NMDeviceEthernet *device) gboolean nm_device_ethernet_get_carrier (NMDeviceEthernet *device) { - NMDeviceEthernetPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), FALSE); - priv = NM_DEVICE_ETHERNET_GET_PRIVATE (device); - if (!priv->carrier_valid) { - priv->carrier = _nm_object_get_boolean_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRED, - DBUS_PROP_CARRIER, - NULL); - priv->carrier_valid = TRUE; - } - - return priv->carrier; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_ETHERNET_GET_PRIVATE (device)->carrier; } static gboolean @@ -243,7 +205,6 @@ nm_device_ethernet_init (NMDeviceEthernet *device) priv->disposed = FALSE; priv->carrier = FALSE; - priv->carrier_valid = FALSE; } static void diff --git a/libnm-glib/nm-device-infiniband.c b/libnm-glib/nm-device-infiniband.c index 576f7eebf..384a34807 100644 --- a/libnm-glib/nm-device-infiniband.c +++ b/libnm-glib/nm-device-infiniband.c @@ -43,7 +43,6 @@ typedef struct { char *hw_address; gboolean carrier; - gboolean carrier_valid; } NMDeviceInfinibandPrivate; enum { @@ -90,19 +89,10 @@ nm_device_infiniband_new (DBusGConnection *connection, const char *path) const char * nm_device_infiniband_get_hw_address (NMDeviceInfiniband *device) { - NMDeviceInfinibandPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_INFINIBAND (device), NULL); - priv = NM_DEVICE_INFINIBAND_GET_PRIVATE (device); - if (!priv->hw_address) { - priv->hw_address = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_INFINIBAND, - DBUS_PROP_HW_ADDRESS, - NULL); - } - - return priv->hw_address; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_INFINIBAND_GET_PRIVATE (device)->hw_address; } /** @@ -116,20 +106,10 @@ nm_device_infiniband_get_hw_address (NMDeviceInfiniband *device) gboolean nm_device_infiniband_get_carrier (NMDeviceInfiniband *device) { - NMDeviceInfinibandPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_INFINIBAND (device), FALSE); - priv = NM_DEVICE_INFINIBAND_GET_PRIVATE (device); - if (!priv->carrier_valid) { - priv->carrier = _nm_object_get_boolean_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_INFINIBAND, - DBUS_PROP_CARRIER, - NULL); - priv->carrier_valid = TRUE; - } - - return priv->carrier; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_INFINIBAND_GET_PRIVATE (device)->carrier; } static gboolean @@ -171,7 +151,6 @@ nm_device_infiniband_init (NMDeviceInfiniband *device) NMDeviceInfinibandPrivate *priv = NM_DEVICE_INFINIBAND_GET_PRIVATE (device); priv->carrier = FALSE; - priv->carrier_valid = FALSE; } static void diff --git a/libnm-glib/nm-device-modem.c b/libnm-glib/nm-device-modem.c index a339cd431..e6dc5a23a 100644 --- a/libnm-glib/nm-device-modem.c +++ b/libnm-glib/nm-device-modem.c @@ -71,20 +71,11 @@ enum { NMDeviceModemCapabilities nm_device_modem_get_modem_capabilities (NMDeviceModem *self) { - NMDeviceModemPrivate *priv; - g_return_val_if_fail (self != NULL, NM_DEVICE_MODEM_CAPABILITY_NONE); g_return_val_if_fail (NM_IS_DEVICE_MODEM (self), NM_DEVICE_MODEM_CAPABILITY_NONE); - priv = NM_DEVICE_MODEM_GET_PRIVATE (self); - if (!priv->caps) { - priv->caps = _nm_object_get_uint_property (NM_OBJECT (self), - NM_DBUS_INTERFACE_DEVICE_MODEM, - DBUS_PROP_MODEM_CAPS, - NULL); - } - - return priv->caps; + _nm_object_ensure_inited (NM_OBJECT (self)); + return NM_DEVICE_MODEM_GET_PRIVATE (self)->caps; } /** @@ -101,20 +92,11 @@ nm_device_modem_get_modem_capabilities (NMDeviceModem *self) NMDeviceModemCapabilities nm_device_modem_get_current_capabilities (NMDeviceModem *self) { - NMDeviceModemPrivate *priv; - g_return_val_if_fail (self != NULL, NM_DEVICE_MODEM_CAPABILITY_NONE); g_return_val_if_fail (NM_IS_DEVICE_MODEM (self), NM_DEVICE_MODEM_CAPABILITY_NONE); - priv = NM_DEVICE_MODEM_GET_PRIVATE (self); - if (!priv->current_caps) { - priv->current_caps = _nm_object_get_uint_property (NM_OBJECT (self), - NM_DBUS_INTERFACE_DEVICE_MODEM, - DBUS_PROP_CURRENT_CAPS, - NULL); - } - - return priv->current_caps; + _nm_object_ensure_inited (NM_OBJECT (self)); + return NM_DEVICE_MODEM_GET_PRIVATE (self)->current_caps; } static gboolean diff --git a/libnm-glib/nm-device-wifi.c b/libnm-glib/nm-device-wifi.c index 6ac9181d6..91106d3ee 100644 --- a/libnm-glib/nm-device-wifi.c +++ b/libnm-glib/nm-device-wifi.c @@ -53,7 +53,6 @@ typedef struct { NM80211Mode mode; guint32 rate; NMAccessPoint *active_ap; - gboolean got_active_ap; NMDeviceWifiCapabilities wireless_caps; GPtrArray *aps; @@ -121,19 +120,10 @@ nm_device_wifi_new (DBusGConnection *connection, const char *path) const char * nm_device_wifi_get_hw_address (NMDeviceWifi *device) { - NMDeviceWifiPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); - priv = NM_DEVICE_WIFI_GET_PRIVATE (device); - if (!priv->hw_address) { - priv->hw_address = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - DBUS_PROP_HW_ADDRESS, - NULL); - } - - return priv->hw_address; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_WIFI_GET_PRIVATE (device)->hw_address; } /** @@ -148,19 +138,10 @@ nm_device_wifi_get_hw_address (NMDeviceWifi *device) const char * nm_device_wifi_get_permanent_hw_address (NMDeviceWifi *device) { - NMDeviceWifiPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); - priv = NM_DEVICE_WIFI_GET_PRIVATE (device); - if (!priv->perm_hw_address) { - priv->perm_hw_address = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - DBUS_PROP_PERM_HW_ADDRESS, - NULL); - } - - return priv->perm_hw_address; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_WIFI_GET_PRIVATE (device)->perm_hw_address; } /** @@ -174,19 +155,10 @@ nm_device_wifi_get_permanent_hw_address (NMDeviceWifi *device) NM80211Mode nm_device_wifi_get_mode (NMDeviceWifi *device) { - NMDeviceWifiPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), 0); - priv = NM_DEVICE_WIFI_GET_PRIVATE (device); - if (!priv->mode) { - priv->mode = _nm_object_get_uint_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - DBUS_PROP_MODE, - NULL); - } - - return priv->mode; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_WIFI_GET_PRIVATE (device)->mode; } /** @@ -200,7 +172,6 @@ nm_device_wifi_get_mode (NMDeviceWifi *device) guint32 nm_device_wifi_get_bitrate (NMDeviceWifi *device) { - NMDeviceWifiPrivate *priv; NMDeviceState state; g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), 0); @@ -217,15 +188,8 @@ nm_device_wifi_get_bitrate (NMDeviceWifi *device) return 0; } - priv = NM_DEVICE_WIFI_GET_PRIVATE (device); - if (!priv->rate) { - priv->rate = _nm_object_get_uint_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - DBUS_PROP_BITRATE, - NULL); - } - - return priv->rate; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_WIFI_GET_PRIVATE (device)->rate; } /** @@ -239,19 +203,10 @@ nm_device_wifi_get_bitrate (NMDeviceWifi *device) NMDeviceWifiCapabilities nm_device_wifi_get_capabilities (NMDeviceWifi *device) { - NMDeviceWifiPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), 0); - priv = NM_DEVICE_WIFI_GET_PRIVATE (device); - if (!priv->wireless_caps) { - priv->wireless_caps = _nm_object_get_uint_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - DBUS_PROP_WIRELESS_CAPABILITIES, - NULL); - } - - return priv->wireless_caps; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_WIFI_GET_PRIVATE (device)->wireless_caps; } /** @@ -265,11 +220,7 @@ nm_device_wifi_get_capabilities (NMDeviceWifi *device) NMAccessPoint * nm_device_wifi_get_active_access_point (NMDeviceWifi *device) { - NMDeviceWifiPrivate *priv; NMDeviceState state; - char *path; - GValue value = { 0, }; - GError *error = NULL; g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); @@ -289,23 +240,8 @@ nm_device_wifi_get_active_access_point (NMDeviceWifi *device) break; } - priv = NM_DEVICE_WIFI_GET_PRIVATE (device); - if (priv->got_active_ap == TRUE) - return priv->active_ap; - - path = _nm_object_get_object_path_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - DBUS_PROP_ACTIVE_ACCESS_POINT, - &error); - if (error == NULL) { - g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); - g_value_take_boxed (&value, path); - demarshal_active_ap (NM_OBJECT (device), NULL, &value, &priv->active_ap); - g_value_unset (&value); - } - g_clear_error (&error); - - return priv->active_ap; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_WIFI_GET_PRIVATE (device)->active_ap; } /** @@ -652,8 +588,6 @@ demarshal_active_ap (NMObject *object, GParamSpec *pspec, GValue *value, gpointe } } - priv->got_active_ap = TRUE; - if (priv->active_ap) { g_object_unref (priv->active_ap); priv->active_ap = NULL; diff --git a/libnm-glib/nm-device-wimax.c b/libnm-glib/nm-device-wimax.c index d5e3a22db..d9555a329 100644 --- a/libnm-glib/nm-device-wimax.c +++ b/libnm-glib/nm-device-wimax.c @@ -48,7 +48,6 @@ typedef struct { char *hw_address; NMWimaxNsp *active_nsp; - gboolean got_active_nsp; GPtrArray *nsps; guint center_freq; @@ -121,19 +120,10 @@ nm_device_wimax_new (DBusGConnection *connection, const char *path) const char * nm_device_wimax_get_hw_address (NMDeviceWimax *wimax) { - NMDeviceWimaxPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIMAX (wimax), NULL); - priv = NM_DEVICE_WIMAX_GET_PRIVATE (wimax); - if (!priv->hw_address) { - priv->hw_address = _nm_object_get_string_property (NM_OBJECT (wimax), - NM_DBUS_INTERFACE_DEVICE_WIMAX, - DBUS_PROP_HW_ADDRESS, - NULL); - } - - return priv->hw_address; + _nm_object_ensure_inited (NM_OBJECT (wimax)); + return NM_DEVICE_WIMAX_GET_PRIVATE (wimax)->hw_address; } /** @@ -147,11 +137,7 @@ nm_device_wimax_get_hw_address (NMDeviceWimax *wimax) NMWimaxNsp * nm_device_wimax_get_active_nsp (NMDeviceWimax *wimax) { - NMDeviceWimaxPrivate *priv; NMDeviceState state; - char *path; - GValue value = { 0, }; - GError *error = NULL; g_return_val_if_fail (NM_IS_DEVICE_WIMAX (wimax), NULL); @@ -171,23 +157,8 @@ nm_device_wimax_get_active_nsp (NMDeviceWimax *wimax) break; } - priv = NM_DEVICE_WIMAX_GET_PRIVATE (wimax); - if (priv->got_active_nsp == TRUE) - return priv->active_nsp; - - path = _nm_object_get_object_path_property (NM_OBJECT (wimax), - NM_DBUS_INTERFACE_DEVICE_WIMAX, - DBUS_PROP_ACTIVE_NSP, - &error); - if (error == NULL) { - g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); - g_value_take_boxed (&value, path); - demarshal_active_nsp (NM_OBJECT (wimax), NULL, &value, &priv->active_nsp); - g_value_unset (&value); - } - g_clear_error (&error); - - return priv->active_nsp; + _nm_object_ensure_inited (NM_OBJECT (wimax)); + return NM_DEVICE_WIMAX_GET_PRIVATE (wimax)->active_nsp; } /** @@ -360,18 +331,10 @@ clean_up_nsps (NMDeviceWimax *self, gboolean notify) guint nm_device_wimax_get_center_frequency (NMDeviceWimax *self) { - NMDeviceWimaxPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), 0); - priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); - if (!priv->center_freq) { - priv->center_freq = _nm_object_get_uint_property (NM_OBJECT (self), - NM_DBUS_INTERFACE_DEVICE_WIMAX, - DBUS_PROP_CENTER_FREQUENCY, - NULL); - } - return priv->center_freq; + _nm_object_ensure_inited (NM_OBJECT (self)); + return NM_DEVICE_WIMAX_GET_PRIVATE (self)->center_freq; } /** @@ -388,18 +351,10 @@ nm_device_wimax_get_center_frequency (NMDeviceWimax *self) gint nm_device_wimax_get_rssi (NMDeviceWimax *self) { - NMDeviceWimaxPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), 0); - priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); - if (!priv->rssi) { - priv->rssi = _nm_object_get_int_property (NM_OBJECT (self), - NM_DBUS_INTERFACE_DEVICE_WIMAX, - DBUS_PROP_RSSI, - NULL); - } - return priv->rssi; + _nm_object_ensure_inited (NM_OBJECT (self)); + return NM_DEVICE_WIMAX_GET_PRIVATE (self)->rssi; } /** @@ -415,18 +370,10 @@ nm_device_wimax_get_rssi (NMDeviceWimax *self) gint nm_device_wimax_get_cinr (NMDeviceWimax *self) { - NMDeviceWimaxPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), 0); - priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); - if (!priv->cinr) { - priv->cinr = _nm_object_get_int_property (NM_OBJECT (self), - NM_DBUS_INTERFACE_DEVICE_WIMAX, - DBUS_PROP_CINR, - NULL); - } - return priv->cinr; + _nm_object_ensure_inited (NM_OBJECT (self)); + return NM_DEVICE_WIMAX_GET_PRIVATE (self)->cinr; } /** @@ -442,18 +389,10 @@ nm_device_wimax_get_cinr (NMDeviceWimax *self) gint nm_device_wimax_get_tx_power (NMDeviceWimax *self) { - NMDeviceWimaxPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), 0); - priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); - if (!priv->tx_power) { - priv->tx_power = _nm_object_get_int_property (NM_OBJECT (self), - NM_DBUS_INTERFACE_DEVICE_WIMAX, - DBUS_PROP_TX_POWER, - NULL); - } - return priv->tx_power; + _nm_object_ensure_inited (NM_OBJECT (self)); + return NM_DEVICE_WIMAX_GET_PRIVATE (self)->tx_power; } /** @@ -467,18 +406,10 @@ nm_device_wimax_get_tx_power (NMDeviceWimax *self) const char * nm_device_wimax_get_bsid (NMDeviceWimax *self) { - NMDeviceWimaxPrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), NULL); - priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); - if (!priv->bsid) { - priv->bsid = _nm_object_get_string_property (NM_OBJECT (self), - NM_DBUS_INTERFACE_DEVICE_WIMAX, - DBUS_PROP_BSID, - NULL); - } - return priv->bsid; + _nm_object_ensure_inited (NM_OBJECT (self)); + return NM_DEVICE_WIMAX_GET_PRIVATE (self)->bsid; } static gboolean @@ -643,8 +574,6 @@ demarshal_active_nsp (NMObject *object, GParamSpec *pspec, GValue *value, gpoint } } - priv->got_active_nsp = TRUE; - if (priv->active_nsp) { g_object_unref (priv->active_nsp); priv->active_nsp = NULL; diff --git a/libnm-glib/nm-device.c b/libnm-glib/nm-device.c index d051a3991..208f41507 100644 --- a/libnm-glib/nm-device.c +++ b/libnm-glib/nm-device.c @@ -56,17 +56,12 @@ typedef struct { gboolean managed; gboolean firmware_missing; NMIP4Config *ip4_config; - gboolean got_ip4_config; NMDHCP4Config *dhcp4_config; - gboolean got_dhcp4_config; NMIP6Config *ip6_config; - gboolean got_ip6_config; NMDHCP6Config *dhcp6_config; - gboolean got_dhcp6_config; NMDeviceState state; NMActiveConnection *active_connection; - gboolean got_active_connection; GUdevClient *client; char *product; @@ -134,8 +129,6 @@ demarshal_ip4_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoint } } - priv->got_ip4_config = TRUE; - if (priv->ip4_config) { g_object_unref (priv->ip4_config); priv->ip4_config = NULL; @@ -170,8 +163,6 @@ demarshal_dhcp4_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoi } } - priv->got_dhcp4_config = TRUE; - if (priv->dhcp4_config) { g_object_unref (priv->dhcp4_config); priv->dhcp4_config = NULL; @@ -206,8 +197,6 @@ demarshal_ip6_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoint } } - priv->got_ip6_config = TRUE; - if (priv->ip6_config) { g_object_unref (priv->ip6_config); priv->ip6_config = NULL; @@ -242,8 +231,6 @@ demarshal_dhcp6_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoi } } - priv->got_dhcp6_config = TRUE; - if (priv->dhcp6_config) { g_object_unref (priv->dhcp6_config); priv->dhcp6_config = NULL; @@ -278,8 +265,6 @@ demarshal_active_connection (NMObject *object, GParamSpec *pspec, GValue *value, } } - priv->got_active_connection = TRUE; - if (priv->active_connection) { g_object_unref (priv->active_connection); priv->active_connection = NULL; @@ -332,13 +317,9 @@ device_state_changed (DBusGProxy *proxy, gpointer user_data) { NMDevice *self = NM_DEVICE (user_data); - NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); - if (priv->state != new_state) { - priv->state = new_state; + if (old_state != new_state) g_signal_emit (self, signals[STATE_CHANGED], 0, new_state, old_state, reason); - _nm_object_queue_notify (NM_OBJECT (self), "state"); - } } static void @@ -906,19 +887,10 @@ out: const char * nm_device_get_iface (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (!priv->iface) { - priv->iface = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Interface", - NULL); - } - - return priv->iface; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->iface; } /** @@ -934,19 +906,10 @@ nm_device_get_iface (NMDevice *device) const char * nm_device_get_ip_iface (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (!priv->ip_iface) { - priv->ip_iface = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "IpInterface", - NULL); - } - - return priv->ip_iface; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->ip_iface; } /** @@ -978,19 +941,10 @@ nm_device_get_device_type (NMDevice *self) const char * nm_device_get_udi (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (!priv->udi) { - priv->udi = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Udi", - NULL); - } - - return priv->udi; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->udi; } /** @@ -1005,19 +959,10 @@ nm_device_get_udi (NMDevice *device) const char * nm_device_get_driver (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (!priv->driver) { - priv->driver = _nm_object_get_string_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Driver", - NULL); - } - - return priv->driver; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->driver; } /** @@ -1031,19 +976,10 @@ nm_device_get_driver (NMDevice *device) NMDeviceCapabilities nm_device_get_capabilities (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), 0); - priv = NM_DEVICE_GET_PRIVATE (device); - if (!priv->capabilities) { - priv->capabilities = _nm_object_get_uint_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Capabilities", - NULL); - } - - return priv->capabilities; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->capabilities; } /** @@ -1057,19 +993,10 @@ nm_device_get_capabilities (NMDevice *device) gboolean nm_device_get_managed (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), 0); - priv = NM_DEVICE_GET_PRIVATE (device); - if (!priv->managed) { - priv->managed = _nm_object_get_boolean_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Managed", - NULL); - } - - return priv->managed; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->managed; } /** @@ -1085,19 +1012,10 @@ nm_device_get_managed (NMDevice *device) gboolean nm_device_get_firmware_missing (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), 0); - priv = NM_DEVICE_GET_PRIVATE (device); - if (!priv->firmware_missing) { - priv->firmware_missing = _nm_object_get_boolean_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "FirmwareMissing", - NULL); - } - - return priv->firmware_missing; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->firmware_missing; } /** @@ -1111,30 +1029,10 @@ nm_device_get_firmware_missing (NMDevice *device) NMIP4Config * nm_device_get_ip4_config (NMDevice *device) { - NMDevicePrivate *priv; - char *path; - GValue value = { 0, }; - GError *error = NULL; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->got_ip4_config == TRUE) - return priv->ip4_config; - - path = _nm_object_get_object_path_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Ip4Config", - &error); - if (error == NULL) { - g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); - g_value_take_boxed (&value, path); - demarshal_ip4_config (NM_OBJECT (device), NULL, &value, &priv->ip4_config); - g_value_unset (&value); - } - g_clear_error (&error); - - return priv->ip4_config; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->ip4_config; } /** @@ -1149,30 +1047,10 @@ nm_device_get_ip4_config (NMDevice *device) NMDHCP4Config * nm_device_get_dhcp4_config (NMDevice *device) { - NMDevicePrivate *priv; - char *path; - GValue value = { 0, }; - GError *error = NULL; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->got_dhcp4_config == TRUE) - return priv->dhcp4_config; - - path = _nm_object_get_object_path_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Dhcp4Config", - &error); - if (error == NULL) { - g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); - g_value_take_boxed (&value, path); - demarshal_dhcp4_config (NM_OBJECT (device), NULL, &value, &priv->dhcp4_config); - g_value_unset (&value); - } - g_clear_error (&error); - - return priv->dhcp4_config; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->dhcp4_config; } /** @@ -1186,30 +1064,10 @@ nm_device_get_dhcp4_config (NMDevice *device) NMIP6Config * nm_device_get_ip6_config (NMDevice *device) { - NMDevicePrivate *priv; - char *path; - GValue value = { 0, }; - GError *error = NULL; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->got_ip6_config == TRUE) - return priv->ip6_config; - - path = _nm_object_get_object_path_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Ip6Config", - &error); - if (error == NULL) { - g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); - g_value_take_boxed (&value, path); - demarshal_ip6_config (NM_OBJECT (device), NULL, &value, &priv->ip6_config); - g_value_unset (&value); - } - g_clear_error (&error); - - return priv->ip6_config; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->ip6_config; } /** @@ -1224,30 +1082,10 @@ nm_device_get_ip6_config (NMDevice *device) NMDHCP6Config * nm_device_get_dhcp6_config (NMDevice *device) { - NMDevicePrivate *priv; - char *path; - GValue value = { 0, }; - GError *error = NULL; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->got_dhcp6_config == TRUE) - return priv->dhcp6_config; - - path = _nm_object_get_object_path_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "Dhcp6Config", - &error); - if (error == NULL) { - g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); - g_value_take_boxed (&value, path); - demarshal_dhcp6_config (NM_OBJECT (device), NULL, &value, &priv->dhcp6_config); - g_value_unset (&value); - } - g_clear_error (&error); - - return priv->dhcp6_config; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->dhcp6_config; } /** @@ -1261,19 +1099,10 @@ nm_device_get_dhcp6_config (NMDevice *device) NMDeviceState nm_device_get_state (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), NM_DEVICE_STATE_UNKNOWN); - priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->state == NM_DEVICE_STATE_UNKNOWN) { - priv->state = _nm_object_get_uint_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "State", - NULL); - } - - return priv->state; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->state; } /** @@ -1288,30 +1117,10 @@ nm_device_get_state (NMDevice *device) NMActiveConnection * nm_device_get_active_connection (NMDevice *device) { - NMDevicePrivate *priv; - char *path; - GValue value = { 0, }; - GError *error = NULL; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->got_active_connection == TRUE) - return priv->active_connection; - - path = _nm_object_get_object_path_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE, - "ActiveConnection", - &error); - if (error == NULL) { - g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); - g_value_take_boxed (&value, path); - demarshal_active_connection (NM_OBJECT (device), NULL, &value, &priv->active_connection); - g_value_unset (&value); - } - g_clear_error (&error); - - return priv->active_connection; + _nm_object_ensure_inited (NM_OBJECT (device)); + return NM_DEVICE_GET_PRIVATE (device)->active_connection; } /* From hostap, Copyright (c) 2002-2005, Jouni Malinen */ diff --git a/libnm-glib/nm-dhcp4-config.c b/libnm-glib/nm-dhcp4-config.c index e3fe2c6cc..06c292d76 100644 --- a/libnm-glib/nm-dhcp4-config.c +++ b/libnm-glib/nm-dhcp4-config.c @@ -212,24 +212,10 @@ nm_dhcp4_config_new (DBusGConnection *connection, const char *object_path) GHashTable * nm_dhcp4_config_get_options (NMDHCP4Config *config) { - NMDHCP4ConfigPrivate *priv = NM_DHCP4_CONFIG_GET_PRIVATE (config); - GValue value = { 0, }; + g_return_val_if_fail (NM_IS_DHCP4_CONFIG (config), NULL); - if (g_hash_table_size (priv->options)) - return priv->options; - - if (!_nm_object_get_property (NM_OBJECT (config), - NM_DBUS_INTERFACE_DHCP4_CONFIG, - "Options", - &value, - NULL)) - goto out; - - demarshal_dhcp4_options (NM_OBJECT (config), NULL, &value, &priv->options); - g_value_unset (&value); - -out: - return priv->options; + _nm_object_ensure_inited (NM_OBJECT (config)); + return NM_DHCP4_CONFIG_GET_PRIVATE (config)->options; } /** diff --git a/libnm-glib/nm-dhcp6-config.c b/libnm-glib/nm-dhcp6-config.c index c282a279a..84eb88fbd 100644 --- a/libnm-glib/nm-dhcp6-config.c +++ b/libnm-glib/nm-dhcp6-config.c @@ -212,24 +212,10 @@ nm_dhcp6_config_new (DBusGConnection *connection, const char *object_path) GHashTable * nm_dhcp6_config_get_options (NMDHCP6Config *config) { - NMDHCP6ConfigPrivate *priv = NM_DHCP6_CONFIG_GET_PRIVATE (config); - GValue value = { 0, }; + g_return_val_if_fail (NM_IS_DHCP6_CONFIG (config), NULL); - if (g_hash_table_size (priv->options)) - return priv->options; - - if (!_nm_object_get_property (NM_OBJECT (config), - NM_DBUS_INTERFACE_DHCP6_CONFIG, - "Options", - &value, - NULL)) - goto out; - - demarshal_dhcp6_options (NM_OBJECT (config), NULL, &value, &priv->options); - g_value_unset (&value); - -out: - return priv->options; + _nm_object_ensure_inited (NM_OBJECT (config)); + return NM_DHCP6_CONFIG_GET_PRIVATE (config)->options; } /** diff --git a/libnm-glib/nm-ip4-config.c b/libnm-glib/nm-ip4-config.c index 7706d05f6..3ea5db050 100644 --- a/libnm-glib/nm-ip4-config.c +++ b/libnm-glib/nm-ip4-config.c @@ -326,27 +326,10 @@ nm_ip4_config_new (DBusGConnection *connection, const char *object_path) const GSList * nm_ip4_config_get_addresses (NMIP4Config *config) { - NMIP4ConfigPrivate *priv; - GValue value = { 0, }; - g_return_val_if_fail (NM_IS_IP4_CONFIG (config), NULL); - priv = NM_IP4_CONFIG_GET_PRIVATE (config); - if (priv->addresses) - return priv->addresses; - - if (!_nm_object_get_property (NM_OBJECT (config), - NM_DBUS_INTERFACE_IP4_CONFIG, - "Addresses", - &value, - NULL)) { - return NULL; - } - - demarshal_ip4_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_IP4_CONFIG_GET_PRIVATE (config)->addresses; } /** @@ -361,29 +344,10 @@ nm_ip4_config_get_addresses (NMIP4Config *config) const GArray * nm_ip4_config_get_nameservers (NMIP4Config *config) { - NMIP4ConfigPrivate *priv; - GArray *array = NULL; - GValue value = {0,}; - g_return_val_if_fail (NM_IS_IP4_CONFIG (config), NULL); - priv = NM_IP4_CONFIG_GET_PRIVATE (config); - if (!priv->nameservers) { - if (_nm_object_get_property (NM_OBJECT (config), - NM_DBUS_INTERFACE_IP4_CONFIG, - "Nameservers", - &value, - NULL)) { - array = (GArray *) g_value_get_boxed (&value); - if (array && array->len) { - priv->nameservers = g_array_sized_new (FALSE, TRUE, sizeof (guint32), array->len); - g_array_append_vals (priv->nameservers, array->data, array->len); - } - g_value_unset (&value); - } - } - - return priv->nameservers; + _nm_object_ensure_inited (NM_OBJECT (config)); + return NM_IP4_CONFIG_GET_PRIVATE (config)->nameservers; } /** @@ -398,32 +362,10 @@ nm_ip4_config_get_nameservers (NMIP4Config *config) const GPtrArray * nm_ip4_config_get_domains (NMIP4Config *config) { - NMIP4ConfigPrivate *priv; - GValue value = {0,}; - g_return_val_if_fail (NM_IS_IP4_CONFIG (config), NULL); - priv = NM_IP4_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_IP4_CONFIG, - "Domains", - &value, - NULL)) { - char **array = NULL, **p; - - array = (char **) g_value_get_boxed (&value); - if (array && g_strv_length (array)) { - priv->domains = g_ptr_array_sized_new (g_strv_length (array)); - for (p = array; *p; p++) - g_ptr_array_add (priv->domains, g_strdup (*p)); - } - g_value_unset (&value); - } - - return handle_ptr_array_return (priv->domains); + _nm_object_ensure_inited (NM_OBJECT (config)); + return handle_ptr_array_return (NM_IP4_CONFIG_GET_PRIVATE (config)->domains); } /** @@ -438,29 +380,10 @@ nm_ip4_config_get_domains (NMIP4Config *config) const GArray * nm_ip4_config_get_wins_servers (NMIP4Config *config) { - NMIP4ConfigPrivate *priv; - GArray *array = NULL; - GValue value = {0,}; - g_return_val_if_fail (NM_IS_IP4_CONFIG (config), NULL); - priv = NM_IP4_CONFIG_GET_PRIVATE (config); - if (!priv->wins) { - if (_nm_object_get_property (NM_OBJECT (config), - NM_DBUS_INTERFACE_IP4_CONFIG, - "WinsServers", - &value, - NULL)) { - array = (GArray *) g_value_get_boxed (&value); - if (array && array->len) { - priv->wins = g_array_sized_new (FALSE, TRUE, sizeof (guint32), array->len); - g_array_append_vals (priv->wins, array->data, array->len); - } - g_value_unset (&value); - } - } - - return priv->wins; + _nm_object_ensure_inited (NM_OBJECT (config)); + return NM_IP4_CONFIG_GET_PRIVATE (config)->wins; } /** @@ -476,26 +399,9 @@ nm_ip4_config_get_wins_servers (NMIP4Config *config) const GSList * nm_ip4_config_get_routes (NMIP4Config *config) { - NMIP4ConfigPrivate *priv; - GValue value = { 0, }; - g_return_val_if_fail (NM_IS_IP4_CONFIG (config), NULL); - priv = NM_IP4_CONFIG_GET_PRIVATE (config); - if (priv->routes) - return priv->routes; - - if (!_nm_object_get_property (NM_OBJECT (config), - NM_DBUS_INTERFACE_IP4_CONFIG, - "Routes", - &value, - NULL)) { - return NULL; - } - - demarshal_ip4_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_IP4_CONFIG_GET_PRIVATE (config)->routes; } diff --git a/libnm-glib/nm-ip6-config.c b/libnm-glib/nm-ip6-config.c index f62ab82a1..01842264a 100644 --- a/libnm-glib/nm-ip6-config.c +++ b/libnm-glib/nm-ip6-config.c @@ -153,27 +153,10 @@ register_properties (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,27 +210,10 @@ 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* diff --git a/libnm-glib/nm-object-private.h b/libnm-glib/nm-object-private.h index c01507db2..7b14ad694 100644 --- a/libnm-glib/nm-object-private.h +++ b/libnm-glib/nm-object-private.h @@ -27,6 +27,8 @@ #include #include "nm-object.h" +void _nm_object_ensure_inited (NMObject *object); + typedef gboolean (*PropertyMarshalFunc) (NMObject *, GParamSpec *, GValue *, gpointer); typedef GObject * (*NMObjectCreatorFunc) (DBusGConnection *, const char *); @@ -41,63 +43,23 @@ void _nm_object_register_properties (NMObject *object, DBusGProxy *proxy, const NMPropertiesInfo *info); +gboolean _nm_object_reload_properties (NMObject *object, GError **error); + void _nm_object_process_properties_changed (NMObject *self, GHashTable *properties); void _nm_object_queue_notify (NMObject *object, const char *property); /* DBus property accessors */ -gboolean _nm_object_get_property (NMObject *object, - const char *interface, - const char *prop_name, - GValue *value, - GError **error); +void _nm_object_reload_property (NMObject *object, + const char *interface, + const char *prop_name); void _nm_object_set_property (NMObject *object, const char *interface, const char *prop_name, GValue *value); -char *_nm_object_get_string_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error); - -char *_nm_object_get_object_path_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error); - -gint32 _nm_object_get_int_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error); - -guint32 _nm_object_get_uint_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error); - -gboolean _nm_object_get_boolean_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error); - -gint8 _nm_object_get_byte_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error); - -gdouble _nm_object_get_double_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error); - -GByteArray *_nm_object_get_byte_array_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error); - static inline const GPtrArray * handle_ptr_array_return (GPtrArray *array) { diff --git a/libnm-glib/nm-object.c b/libnm-glib/nm-object.c index e60665041..5eb7a0a6f 100644 --- a/libnm-glib/nm-object.c +++ b/libnm-glib/nm-object.c @@ -52,7 +52,7 @@ typedef struct { GSList *notify_props; guint32 notify_id; - gboolean disposed; + gboolean inited, disposed; } NMObjectPrivate; enum { @@ -515,33 +515,71 @@ _nm_object_register_properties (NMObject *object, } gboolean -_nm_object_get_property (NMObject *object, - const char *interface, - const char *prop_name, - GValue *value, - GError **error) +_nm_object_reload_properties (NMObject *object, GError **error) { + NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object); + GHashTable *props = NULL; + GSList *p; + + if (!priv->property_interfaces) + return TRUE; + + priv->inited = TRUE; + + for (p = priv->property_interfaces; p; p = p->next) { + if (!dbus_g_proxy_call (priv->properties_proxy, "GetAll", error, + G_TYPE_STRING, p->data, + G_TYPE_INVALID, + DBUS_TYPE_G_MAP_OF_VARIANT, &props, + G_TYPE_INVALID)) + return FALSE; + + _nm_object_process_properties_changed (object, props); + g_hash_table_destroy (props); + } + + return TRUE; +} + +void +_nm_object_ensure_inited (NMObject *object) +{ + NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object); + GError *error = NULL; + + if (!priv->inited) { + if (!_nm_object_reload_properties (object, &error)) { + g_warning ("Could not initialize %s %s: %s", + G_OBJECT_TYPE_NAME (object), priv->path, + error->message); + g_error_free (error); + } + } +} + +void +_nm_object_reload_property (NMObject *object, + const char *interface, + const char *prop_name) +{ + GValue value = { 0, }; GError *err = NULL; - g_return_val_if_fail (NM_IS_OBJECT (object), FALSE); - g_return_val_if_fail (interface != NULL, FALSE); - g_return_val_if_fail (prop_name != NULL, FALSE); - g_return_val_if_fail (value != NULL, FALSE); - g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + g_return_if_fail (NM_IS_OBJECT (object)); + g_return_if_fail (interface != NULL); + g_return_if_fail (prop_name != NULL); if (!dbus_g_proxy_call_with_timeout (NM_OBJECT_GET_PRIVATE (object)->properties_proxy, "Get", 15000, &err, G_TYPE_STRING, interface, G_TYPE_STRING, prop_name, G_TYPE_INVALID, - G_TYPE_VALUE, value, + G_TYPE_VALUE, &value, G_TYPE_INVALID)) { /* Don't warn about D-Bus no reply/timeout errors; it's mostly noise and * happens for example when NM quits and the applet is still running. - * And don't warn when 'error' is not NULL, rather propagate 'err' so the caller - * can do something with it. */ - if ( !error - && !(err->domain == DBUS_GERROR && err->code == DBUS_GERROR_NO_REPLY)) { + */ + if (!g_error_matches (err, DBUS_GERROR, DBUS_GERROR_NO_REPLY)) { g_warning ("%s: Error getting '%s' for %s: (%d) %s\n", __func__, prop_name, @@ -549,11 +587,12 @@ _nm_object_get_property (NMObject *object, err->code, err->message); } - g_propagate_error (error, err); - return FALSE; + g_clear_error (&err); + return; } - return TRUE; + handle_property_changed ((gpointer)prop_name, &value, object); + g_value_unset (&value); } void @@ -579,158 +618,3 @@ _nm_object_set_property (NMObject *object, */ } } - -char * -_nm_object_get_string_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error) -{ - char *str = NULL; - const char *tmp; - GValue value = {0,}; - - if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - if (G_VALUE_HOLDS_STRING (&value)) - str = g_strdup (g_value_get_string (&value)); - else if (G_VALUE_HOLDS (&value, DBUS_TYPE_G_OBJECT_PATH)) { - tmp = g_value_get_boxed (&value); - /* Handle "NULL" object paths */ - if (g_strcmp0 (tmp, "/") != 0) - str = g_strdup (tmp); - } - g_value_unset (&value); - } - - return str; -} - -char * -_nm_object_get_object_path_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error) -{ - char *path = NULL; - const char *tmp; - GValue value = {0,}; - - if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - tmp = g_value_get_boxed (&value); - if (g_strcmp0 (tmp, "/") != 0) - path = g_strdup (tmp); - g_value_unset (&value); - } - - return path; -} - -gint32 -_nm_object_get_int_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error) -{ - gint32 i = 0; - GValue value = {0,}; - - if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - i = g_value_get_int (&value); - g_value_unset (&value); - } - - return i; -} - -guint32 -_nm_object_get_uint_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error) -{ - guint32 i = 0; - GValue value = {0,}; - - if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - i = g_value_get_uint (&value); - g_value_unset (&value); - } - - return i; -} - -gboolean -_nm_object_get_boolean_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error) -{ - gboolean b = FALSE; - GValue value = {0,}; - - if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - b = g_value_get_boolean (&value); - g_value_unset (&value); - } - - return b; -} - -gint8 -_nm_object_get_byte_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error) -{ - gint8 b = G_MAXINT8; - GValue value = {0,}; - - if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - b = g_value_get_uchar (&value); - g_value_unset (&value); - } - - return b; -} - -gdouble -_nm_object_get_double_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error) -{ - gdouble d = G_MAXDOUBLE; - GValue value = {0,}; - - if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - d = g_value_get_double (&value); - g_value_unset (&value); - } - - return d; -} - -GByteArray * -_nm_object_get_byte_array_property (NMObject *object, - const char *interface, - const char *prop_name, - GError **error) -{ - GByteArray *array = NULL; - GValue value = {0,}; - - if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - GArray * tmp = g_value_get_boxed (&value); - int i; - unsigned char byte; - - array = g_byte_array_sized_new (tmp->len); - for (i = 0; i < tmp->len; i++) { - byte = g_array_index (tmp, unsigned char, i); - g_byte_array_append (array, &byte, 1); - } - g_value_unset (&value); - } - - return array; -} diff --git a/libnm-glib/nm-vpn-connection.c b/libnm-glib/nm-vpn-connection.c index 94d4110f4..58c2ea4fb 100644 --- a/libnm-glib/nm-vpn-connection.c +++ b/libnm-glib/nm-vpn-connection.c @@ -99,21 +99,11 @@ nm_vpn_connection_get_banner (NMVPNConnection *vpn) priv = NM_VPN_CONNECTION_GET_PRIVATE (vpn); /* We need to update vpn_state first in case it's unknown. */ - nm_vpn_connection_get_vpn_state (vpn); + _nm_object_ensure_inited (NM_OBJECT (vpn)); if (priv->vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED) return NULL; - if (!priv->banner) { - priv->banner = _nm_object_get_string_property (NM_OBJECT (vpn), - NM_DBUS_INTERFACE_VPN_CONNECTION, - DBUS_PROP_BANNER, - NULL); - if (priv->banner && !strlen (priv->banner)) { - g_free (priv->banner); - priv->banner = NULL; - } - } return priv->banner; } @@ -128,18 +118,10 @@ nm_vpn_connection_get_banner (NMVPNConnection *vpn) NMVPNConnectionState nm_vpn_connection_get_vpn_state (NMVPNConnection *vpn) { - NMVPNConnectionPrivate *priv; - g_return_val_if_fail (NM_IS_VPN_CONNECTION (vpn), NM_VPN_CONNECTION_STATE_UNKNOWN); - priv = NM_VPN_CONNECTION_GET_PRIVATE (vpn); - if (priv->vpn_state == NM_VPN_CONNECTION_STATE_UNKNOWN) { - priv->vpn_state = _nm_object_get_uint_property (NM_OBJECT (vpn), - NM_DBUS_INTERFACE_VPN_CONNECTION, - DBUS_PROP_VPN_STATE, - NULL); - } - return priv->vpn_state; + _nm_object_ensure_inited (NM_OBJECT (vpn)); + return NM_VPN_CONNECTION_GET_PRIVATE (vpn)->vpn_state; } static void diff --git a/libnm-glib/nm-wimax-nsp.c b/libnm-glib/nm-wimax-nsp.c index a4f1ea820..bfacc8710 100644 --- a/libnm-glib/nm-wimax-nsp.c +++ b/libnm-glib/nm-wimax-nsp.c @@ -90,18 +90,10 @@ nm_wimax_nsp_new (DBusGConnection *connection, const char *path) const char * nm_wimax_nsp_get_name (NMWimaxNsp *nsp) { - NMWimaxNspPrivate *priv; - g_return_val_if_fail (NM_IS_WIMAX_NSP (nsp), NULL); - priv = NM_WIMAX_NSP_GET_PRIVATE (nsp); - if (!priv->name) - priv->name = _nm_object_get_string_property (NM_OBJECT (nsp), - NM_DBUS_INTERFACE_WIMAX_NSP, - DBUS_PROP_NAME, - NULL); - - return priv->name; + _nm_object_ensure_inited (NM_OBJECT (nsp)); + return NM_WIMAX_NSP_GET_PRIVATE (nsp)->name; } /** @@ -115,19 +107,10 @@ nm_wimax_nsp_get_name (NMWimaxNsp *nsp) guint32 nm_wimax_nsp_get_signal_quality (NMWimaxNsp *nsp) { - NMWimaxNspPrivate *priv; - g_return_val_if_fail (NM_IS_WIMAX_NSP (nsp), 0); - priv = NM_WIMAX_NSP_GET_PRIVATE (nsp); - if (!priv->signal_quality) { - priv->signal_quality = _nm_object_get_uint_property (NM_OBJECT (nsp), - NM_DBUS_INTERFACE_WIMAX_NSP, - DBUS_PROP_SIGNAL_QUALITY, - NULL); - } - - return priv->signal_quality; + _nm_object_ensure_inited (NM_OBJECT (nsp)); + return NM_WIMAX_NSP_GET_PRIVATE (nsp)->signal_quality; } /** @@ -141,19 +124,10 @@ nm_wimax_nsp_get_signal_quality (NMWimaxNsp *nsp) NMWimaxNspNetworkType nm_wimax_nsp_get_network_type (NMWimaxNsp *nsp) { - NMWimaxNspPrivate *priv; - g_return_val_if_fail (NM_IS_WIMAX_NSP (nsp), NM_WIMAX_NSP_NETWORK_TYPE_UNKNOWN); - priv = NM_WIMAX_NSP_GET_PRIVATE (nsp); - if (!priv->network_type) { - priv->network_type = _nm_object_get_uint_property (NM_OBJECT (nsp), - NM_DBUS_INTERFACE_WIMAX_NSP, - DBUS_PROP_NETWORK_TYPE, - NULL); - } - - return priv->network_type; + _nm_object_ensure_inited (NM_OBJECT (nsp)); + return NM_WIMAX_NSP_GET_PRIVATE (nsp)->network_type; } /**