Starting on TcpClient, some formatting fixes
[cascardo/gnio.git] / gnio / ginetaddress.c
index 782c707..3890727 100644 (file)
@@ -1,6 +1,6 @@
 /* GNIO - GLib Network Layer of GIO
- * 
- * Copyright (C) 2008 Christian Kellner 
+ *
+ * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -17,7 +17,8 @@
  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  * Boston, MA 02111-1307, USA.
  *
- * Author: Christian Kellner <gicmo@gnome.org>
+ * Authors: Christian Kellner <gicmo@gnome.org>
+ *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
  */
 
 #include <config.h>
  * 
  **/
 
-G_DEFINE_ABSTRACT_TYPE (GInetAddress, g_inet_address, G_TYPE_OBJECT);
+G_DEFINE_ABSTRACT_TYPE (GInetAddress, g_inet_address, G_TYPE_INITIALLY_UNOWNED);
 
+enum
+{
+  PROP_0,
+  PROP_IS_ANY,
+  PROP_IS_LINKLOCAL,
+  PROP_IS_LOOPBACK,
+  PROP_IS_SITELOCAL,
+  PROP_IS_MULTICAST,
+  PROP_IS_MC_GLOBAL,
+  PROP_IS_MC_LINKLOCAL,
+  PROP_IS_MC_NODELOCAL,
+  PROP_IS_MC_ORGLOCAL,
+  PROP_IS_MC_SITELOCAL,
+};
 
+static void
+g_inet_address_get_property (GObject    *object,
+                             guint       prop_id,
+                             GValue     *value,
+                             GParamSpec *pspec)
+{
+  GInetAddress *address = G_INET_ADDRESS (object);
 
+  switch (prop_id)
+    {
+      case PROP_IS_ANY:
+        g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_any (address));
+        break;
 
+      case PROP_IS_LINKLOCAL:
+        g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_linklocal (address));
+        break;
 
-static void
-g_inet_address_class_init (GInetAddressClass *klass)
-{
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+      case PROP_IS_LOOPBACK:
+        g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_loopback (address));
+        break;
 
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
 }
 
 static void
-g_inet_address_init (GInetAddress *address)
+g_inet_address_set_property (GObject      *object,
+                             guint         prop_id,
+                             const GValue *value,
+                             GParamSpec   *pspec)
 {
+  GInetAddress *address G_GNUC_UNUSED = G_INET_ADDRESS (object);
 
+  switch (prop_id)
+    {
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
 }
 
-/* ************************************************************************* */
-/* Public Functions */
-
-GInetAddress  *
-g_inet_address_resolve (const char    *host,
-                        GCancellable  *cancellable,
-                        GError       **error)
+static void
+g_inet_address_class_init (GInetAddressClass *klass)
 {
-  return NULL;
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->get_property = g_inet_address_get_property;
+  gobject_class->set_property = g_inet_address_set_property;
+
+  g_object_class_install_property (gobject_class, PROP_IS_ANY,
+                                   g_param_spec_boolean ("is-any",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_LINKLOCAL,
+                                   g_param_spec_boolean ("is-link-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_LOOPBACK,
+                                   g_param_spec_boolean ("is-loopback",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_SITELOCAL,
+                                   g_param_spec_boolean ("is-site-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MULTICAST,
+                                   g_param_spec_boolean ("is-multicast",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_GLOBAL,
+                                   g_param_spec_boolean ("is-mc-global",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_LINKLOCAL,
+                                   g_param_spec_boolean ("is-mc-link-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_NODELOCAL,
+                                   g_param_spec_boolean ("is-mc-node-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_ORGLOCAL,
+                                   g_param_spec_boolean ("is-mc-org-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_SITELOCAL,
+                                   g_param_spec_boolean ("is-mc-site-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
 }
 
-void
-g_inet_address_resolve_async (const char *host,
-                              GCancellable *cancellable,
-                              GAsyncReadyCallback callback,
-                              gpointer user_data)
+static void
+g_inet_address_init (GInetAddress *address)
 {
 
 }
 
-GInetAddress *
-g_inet_address_resolve_finish (GInetAddress *address,
-                               GAsyncResult *result,
-                               GError **error)
+gchar *
+g_inet_address_to_string (GInetAddress *address)
 {
-  return NULL;
-}
+  g_return_val_if_fail (G_IS_INET_ADDRESS (address), NULL);
 
-char *
-g_inet_address_lookup_reverse (GInetAddress *address,
-                               GCancellable  *cancellable,
-                               GError       **error)
-{
-  return NULL;
+  return G_INET_ADDRESS_GET_CLASS (address)->to_string (address);
 }
 
-void
-g_inet_address_lookup_reverse_async  (GInetAddress *address,
-                                      GCancellable *cancellable,
-                                      GAsyncReadyCallback callback,
-                                      gpointer user_data)
+/* ******************************************* */
+/* Getters for properties */
+
+static gboolean
+get_boolean_property (GInetAddress *address, const gchar *property)
 {
+  gboolean value;
 
-}
+  g_return_val_if_fail (G_IS_INET_ADDRESS (address), FALSE);
 
-char *
-g_inet_address_lookup_reverse_finish (GInetAddress *address,
-                                      GAsyncResult *result,
-                                      GError **error)
-{
-  return NULL;
-}
+  g_object_get (address, property, &value, NULL);
 
-/* ******************************************* */
-/* Getteres for properties*/
+  return value;
+}
 
 gboolean
-g_inet_address_is_any_local (GInetAddress *address)
+g_inet_address_is_any (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-any");
 }
 
 gboolean
-g_inet_address_is_link_local (GInetAddress *address)
+g_inet_address_is_linklocal (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-link-local");
 }
 
 gboolean
 g_inet_address_is_loopback (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-loopback");
 }
 
 gboolean
 g_inet_address_is_sitelocal (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-site-local");
 }
 
 gboolean
 g_inet_address_is_multicast (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-multicast");
 }
 
 gboolean
 g_inet_address_is_mc_global (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-mc-global");
 }
 
 gboolean
 g_inet_address_is_mc_linklocal (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-mc-link-local");
 }
 
 gboolean
 g_inet_address_is_mc_nodelocal (GInetAddress *address)
 {
-  return FALSE;
+  return get_boolean_property (address, "is-mc-node-local");
 }
 
 gboolean
 g_inet_address_is_mc_orglocal  (GInetAddress *address)
 {
-  return FALSE;
+  return get_boolean_property (address, "is-mc-org-local");
 }
 
 gboolean
 g_inet_address_is_mc_sitelocal (GInetAddress *address)
 {
-  return FALSE;
+  return get_boolean_property (address, "is-mc-site-local");
 }