summaryrefslogtreecommitdiff
path: root/libnm-glib/nm-access-point.c
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2008-03-24 15:17:30 +0000
committerDan Williams <dcbw@redhat.com>2008-03-24 15:17:30 +0000
commit007351657f84fa9cc27ab4271539984d1c395c81 (patch)
treec625ad9edf8b807390765d2ade0b6d12dff4a25e /libnm-glib/nm-access-point.c
parent1a6782962bce688df8026c1c3924009c304b1ae1 (diff)
downloadNetworkManager-007351657f84fa9cc27ab4271539984d1c395c81.tar.gz
2008-03-24 Dan Williams <dcbw@redhat.com>
Massive fixup of libnm-glib to: a) have all objects (with the exception of VPN) cache their properties and update them asynchronously on PropertiesChanged signals from NM b) return internal const data for most attributes/properties instead of allocated values that the caller must free c) cache wrapped objects such that a given D-Bus path will always map to the same GObject returned by libnm-glib d) remove a few signals and move them to GObject property notifications e) match recent NM D-Bus API changes for activation/deactivation f) remove some private functions from libnm-glib headers git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3491 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Diffstat (limited to 'libnm-glib/nm-access-point.c')
-rw-r--r--libnm-glib/nm-access-point.c241
1 files changed, 69 insertions, 172 deletions
diff --git a/libnm-glib/nm-access-point.c b/libnm-glib/nm-access-point.c
index 2373c95a54..691e88909d 100644
--- a/libnm-glib/nm-access-point.c
+++ b/libnm-glib/nm-access-point.c
@@ -6,6 +6,8 @@
#include "nm-access-point.h"
#include "NetworkManager.h"
+#include "nm-types-private.h"
+#include "nm-object-private.h"
#include "nm-access-point-bindings.h"
@@ -15,7 +17,8 @@ G_DEFINE_TYPE (NMAccessPoint, nm_access_point, NM_TYPE_OBJECT)
typedef struct {
gboolean disposed;
- DBusGProxy *ap_proxy;
+ DBusGProxy *proxy;
+
guint32 flags;
guint32 wpa_flags;
guint32 rsn_flags;
@@ -24,7 +27,7 @@ typedef struct {
char *hw_address;
int mode;
guint32 max_bitrate;
- gint8 strength;
+ guint8 strength;
} NMAccessPointPrivate;
enum {
@@ -52,22 +55,16 @@ enum {
#define DBUS_PROP_MAX_BITRATE "MaxBitrate"
#define DBUS_PROP_STRENGTH "Strength"
-NMAccessPoint *
+GObject *
nm_access_point_new (DBusGConnection *connection, const char *path)
{
- return (NMAccessPoint *) g_object_new (NM_TYPE_ACCESS_POINT,
- NM_OBJECT_CONNECTION, connection,
- NM_OBJECT_PATH, path,
- NULL);
-}
-
-static void
-nm_access_point_set_flags (NMAccessPoint *ap, guint32 flags)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
+ g_return_val_if_fail (connection != NULL, NULL);
+ g_return_val_if_fail (path != NULL, NULL);
- priv->flags = flags;
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_FLAGS);
+ return (GObject *) g_object_new (NM_TYPE_ACCESS_POINT,
+ NM_OBJECT_DBUS_CONNECTION, connection,
+ NM_OBJECT_DBUS_PATH, path,
+ NULL);
}
guint32
@@ -87,15 +84,6 @@ nm_access_point_get_flags (NMAccessPoint *ap)
return priv->flags;
}
-static void
-nm_access_point_set_wpa_flags (NMAccessPoint *ap, guint32 flags)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
-
- priv->wpa_flags = flags;
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_WPA_FLAGS);
-}
-
guint32
nm_access_point_get_wpa_flags (NMAccessPoint *ap)
{
@@ -113,15 +101,6 @@ nm_access_point_get_wpa_flags (NMAccessPoint *ap)
return priv->wpa_flags;
}
-static void
-nm_access_point_set_rsn_flags (NMAccessPoint *ap, guint32 flags)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
-
- priv->rsn_flags = flags;
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_RSN_FLAGS);
-}
-
guint32
nm_access_point_get_rsn_flags (NMAccessPoint *ap)
{
@@ -139,25 +118,6 @@ nm_access_point_get_rsn_flags (NMAccessPoint *ap)
return priv->rsn_flags;
}
-static void
-nm_access_point_set_ssid (NMAccessPoint *ap, GArray *ssid)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
-
- if (priv->ssid) {
- g_byte_array_free (priv->ssid, TRUE);
- priv->ssid = NULL;
- }
-
- if (ssid && ssid->len > 0) {
- priv->ssid = g_byte_array_sized_new (ssid->len);
- priv->ssid->len = ssid->len;
- memcpy (priv->ssid->data, ssid->data, ssid->len);
- }
-
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_SSID);
-}
-
const GByteArray *
nm_access_point_get_ssid (NMAccessPoint *ap)
{
@@ -175,15 +135,6 @@ nm_access_point_get_ssid (NMAccessPoint *ap)
return priv->ssid;
}
-static void
-nm_access_point_set_frequency (NMAccessPoint *ap, guint32 frequency)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
-
- priv->frequency = frequency;
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_FREQUENCY);
-}
-
guint32
nm_access_point_get_frequency (NMAccessPoint *ap)
{
@@ -201,16 +152,6 @@ nm_access_point_get_frequency (NMAccessPoint *ap)
return priv->frequency;
}
-static void
-nm_access_point_set_hw_address (NMAccessPoint *ap, const char *address)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
-
- g_free (priv->hw_address);
- priv->hw_address = address ? g_strdup (address) : NULL;
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_HW_ADDRESS);
-}
-
const char *
nm_access_point_get_hw_address (NMAccessPoint *ap)
{
@@ -228,15 +169,6 @@ nm_access_point_get_hw_address (NMAccessPoint *ap)
return priv->hw_address;
}
-static void
-nm_access_point_set_mode (NMAccessPoint *ap, int mode)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
-
- priv->mode = mode;
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_MODE);
-}
-
int
nm_access_point_get_mode (NMAccessPoint *ap)
{
@@ -254,15 +186,6 @@ nm_access_point_get_mode (NMAccessPoint *ap)
return priv->mode;
}
-static void
-nm_access_point_set_max_bitrate (NMAccessPoint *ap, guint32 bitrate)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
-
- priv->max_bitrate = bitrate;
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_MAX_BITRATE);
-}
-
guint32
nm_access_point_get_max_bitrate (NMAccessPoint *ap)
{
@@ -280,16 +203,7 @@ nm_access_point_get_max_bitrate (NMAccessPoint *ap)
return priv->max_bitrate;
}
-static void
-nm_access_point_set_strength (NMAccessPoint *ap, gint8 strength)
-{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
-
- priv->strength = strength;
- g_object_notify (G_OBJECT (ap), NM_ACCESS_POINT_STRENGTH);
-}
-
-gint8
+guint8
nm_access_point_get_strength (NMAccessPoint *ap)
{
NMAccessPointPrivate *priv;
@@ -325,7 +239,7 @@ dispose (GObject *object)
priv->disposed = TRUE;
- g_object_unref (priv->ap_proxy);
+ g_object_unref (priv->proxy);
G_OBJECT_CLASS (nm_access_point_parent_class)->dispose (object);
}
@@ -345,38 +259,40 @@ finalize (GObject *object)
}
static void
-set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
NMAccessPoint *ap = NM_ACCESS_POINT (object);
switch (prop_id) {
case PROP_FLAGS:
- nm_access_point_set_flags (ap, g_value_get_uint (value));
+ g_value_set_uint (value, nm_access_point_get_flags (ap));
break;
case PROP_WPA_FLAGS:
- nm_access_point_set_wpa_flags (ap, g_value_get_uint (value));
+ g_value_set_uint (value, nm_access_point_get_wpa_flags (ap));
break;
case PROP_RSN_FLAGS:
- nm_access_point_set_rsn_flags (ap, g_value_get_uint (value));
+ g_value_set_uint (value, nm_access_point_get_rsn_flags (ap));
break;
case PROP_SSID:
- nm_access_point_set_ssid (ap, (GArray *) g_value_get_boxed (value));
+ g_value_set_boxed (value, nm_access_point_get_ssid (ap));
break;
case PROP_FREQUENCY:
- nm_access_point_set_frequency (ap, g_value_get_uint (value));
+ g_value_set_uint (value, nm_access_point_get_frequency (ap));
break;
case PROP_HW_ADDRESS:
- nm_access_point_set_hw_address (ap, g_value_get_string (value));
+ g_value_set_string (value, nm_access_point_get_hw_address (ap));
break;
case PROP_MODE:
- nm_access_point_set_mode (ap, g_value_get_int (value));
+ g_value_set_int (value, nm_access_point_get_mode (ap));
break;
case PROP_MAX_BITRATE:
- nm_access_point_set_max_bitrate (ap, g_value_get_uint (value));
+ g_value_set_uint (value, nm_access_point_get_max_bitrate (ap));
break;
case PROP_STRENGTH:
- nm_access_point_set_strength (ap, g_value_get_char (value));
+ g_value_set_uchar (value, nm_access_point_get_strength (ap));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -384,54 +300,36 @@ set_property (GObject *object, guint prop_id,
}
}
-static void
-get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+static gboolean
+demarshal_ssid (NMObject *object, GParamSpec *pspec, GValue *value, gpointer field)
{
- NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (object);
- GArray * ssid;
- int len;
- int i;
+ if (!nm_ssid_demarshal (value, (GByteArray **) field))
+ return FALSE;
- switch (prop_id) {
- case PROP_FLAGS:
- g_value_set_uint (value, priv->flags);
- break;
- case PROP_WPA_FLAGS:
- g_value_set_uint (value, priv->wpa_flags);
- break;
- case PROP_RSN_FLAGS:
- g_value_set_uint (value, priv->rsn_flags);
- break;
- case PROP_SSID:
- len = priv->ssid ? priv->ssid->len : 0;
- ssid = g_array_sized_new (FALSE, TRUE, sizeof (unsigned char), len);
- for (i = 0; i < len; i++)
- g_array_append_val (ssid, priv->ssid->data[i]);
- g_value_set_boxed (value, ssid);
- g_array_free (ssid, TRUE);
- break;
- case PROP_FREQUENCY:
- g_value_set_uint (value, priv->frequency);
- break;
- case PROP_HW_ADDRESS:
- g_value_set_string (value, priv->hw_address);
- break;
- case PROP_MODE:
- g_value_set_int (value, priv->mode);
- break;
- case PROP_MAX_BITRATE:
- g_value_set_uint (value, priv->max_bitrate);
- break;
- case PROP_STRENGTH:
- g_value_set_char (value, priv->strength);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ g_object_notify (G_OBJECT (object), NM_ACCESS_POINT_SSID);
+ return TRUE;
+}
+
+static void
+register_for_property_changed (NMAccessPoint *ap)
+{
+ NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
+ const NMPropertiesChangedInfo property_changed_info[] = {
+ { NM_ACCESS_POINT_FLAGS, nm_object_demarshal_generic, &priv->flags },
+ { NM_ACCESS_POINT_WPA_FLAGS, nm_object_demarshal_generic, &priv->wpa_flags },
+ { NM_ACCESS_POINT_RSN_FLAGS, nm_object_demarshal_generic, &priv->rsn_flags },
+ { NM_ACCESS_POINT_SSID, demarshal_ssid, &priv->ssid },
+ { NM_ACCESS_POINT_FREQUENCY, nm_object_demarshal_generic, &priv->frequency },
+ { NM_ACCESS_POINT_HW_ADDRESS, nm_object_demarshal_generic, &priv->hw_address },
+ { NM_ACCESS_POINT_MODE, nm_object_demarshal_generic, &priv->mode },
+ { NM_ACCESS_POINT_MAX_BITRATE, nm_object_demarshal_generic, &priv->max_bitrate },
+ { NM_ACCESS_POINT_STRENGTH, nm_object_demarshal_generic, &priv->strength },
+ { NULL },
+ };
+
+ nm_object_handle_properties_changed (NM_OBJECT (ap),
+ priv->proxy,
+ property_changed_info);
}
static GObject*
@@ -450,12 +348,12 @@ constructor (GType type,
priv = NM_ACCESS_POINT_GET_PRIVATE (object);
- priv->ap_proxy = dbus_g_proxy_new_for_name (nm_object_get_connection (object),
+ priv->proxy = dbus_g_proxy_new_for_name (nm_object_get_connection (object),
NM_DBUS_SERVICE,
nm_object_get_path (object),
NM_DBUS_INTERFACE_ACCESS_POINT);
- nm_object_handle_properties_changed (NM_OBJECT (object), priv->ap_proxy);
+ register_for_property_changed (NM_ACCESS_POINT (object));
return G_OBJECT (object);
}
@@ -470,7 +368,6 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
/* virtual methods */
object_class->constructor = constructor;
- object_class->set_property = set_property;
object_class->get_property = get_property;
object_class->dispose = dispose;
object_class->finalize = finalize;
@@ -484,7 +381,7 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
NM_802_11_AP_FLAGS_NONE,
NM_802_11_AP_FLAGS_PRIVACY,
NM_802_11_AP_FLAGS_NONE,
- G_PARAM_READWRITE));
+ G_PARAM_READABLE));
g_object_class_install_property
(object_class, PROP_WPA_FLAGS,
@@ -492,7 +389,7 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
"WPA Flags",
"WPA Flags",
0, G_MAXUINT32, 0,
- G_PARAM_READWRITE));
+ G_PARAM_READABLE));
g_object_class_install_property
(object_class, PROP_RSN_FLAGS,
@@ -500,15 +397,15 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
"RSN Flags",
"RSN Flags",
0, G_MAXUINT32, 0,
- G_PARAM_READWRITE));
+ G_PARAM_READABLE));
g_object_class_install_property
(object_class, PROP_SSID,
g_param_spec_boxed (NM_ACCESS_POINT_SSID,
"SSID",
"SSID",
- DBUS_TYPE_G_UCHAR_ARRAY,
- G_PARAM_READWRITE));
+ NM_TYPE_SSID,
+ G_PARAM_READABLE));
g_object_class_install_property
(object_class, PROP_FREQUENCY,
@@ -516,7 +413,7 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
"Frequency",
"Frequency",
0, 10000, 0,
- G_PARAM_READWRITE));
+ G_PARAM_READABLE));
g_object_class_install_property
(object_class, PROP_HW_ADDRESS,
@@ -524,7 +421,7 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
"MAC Address",
"Hardware MAC address",
NULL,
- G_PARAM_READWRITE));
+ G_PARAM_READABLE));
g_object_class_install_property
(object_class, PROP_MODE,
@@ -532,7 +429,7 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
"Mode",
"Mode",
IW_MODE_ADHOC, IW_MODE_INFRA, IW_MODE_INFRA,
- G_PARAM_READWRITE));
+ G_PARAM_READABLE));
g_object_class_install_property
(object_class, PROP_MAX_BITRATE,
@@ -540,13 +437,13 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
"Max Bitrate",
"Max Bitrate",
0, G_MAXUINT32, 0,
- G_PARAM_READWRITE));
+ G_PARAM_READABLE));
g_object_class_install_property
(object_class, PROP_STRENGTH,
- g_param_spec_char (NM_ACCESS_POINT_STRENGTH,
+ g_param_spec_uchar (NM_ACCESS_POINT_STRENGTH,
"Strength",
"Strength",
- G_MININT8, G_MAXINT8, 0,
- G_PARAM_READWRITE));
+ 0, G_MAXUINT8, 0,
+ G_PARAM_READABLE));
}