[Telepathy-commits] [telepathy-sofiasip/master] Added implementations for Contacts and DBus properties to TpsipConnection

Mikhail Zabaluev mikhail.zabaluev at nokia.com
Wed Sep 10 02:19:24 PDT 2008


---
 src/sip-connection.c |   27 +++++++++++++++++++++++++--
 src/sip-connection.h |    5 +++++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/sip-connection.c b/src/sip-connection.c
index 90708c8..9fef8be 100644
--- a/src/sip-connection.c
+++ b/src/sip-connection.c
@@ -57,6 +57,10 @@ static void conn_iface_init (gpointer, gpointer);
 G_DEFINE_TYPE_WITH_CODE(TpsipConnection, tpsip_connection,
     TP_TYPE_BASE_CONNECTION,
     G_IMPLEMENT_INTERFACE (TPSIP_TYPE_EVENT_TARGET, event_target_iface_init);
+    G_IMPLEMENT_INTERFACE(TP_TYPE_SVC_DBUS_PROPERTIES,
+        tp_dbus_properties_mixin_iface_init);
+    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS,
+        tp_contacts_mixin_iface_init);
     G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION, conn_iface_init))
 
 #define ERROR_IF_NOT_CONNECTED_ASYNC(BASE, CONTEXT) \
@@ -184,14 +188,20 @@ tpsip_connection_create_channel_factories (TpBaseConnection *base)
 }
 
 static void
-tpsip_connection_init (TpsipConnection *obj)
+tpsip_connection_init (TpsipConnection *self)
 {
-  TpsipConnectionPrivate *priv = TPSIP_CONNECTION_GET_PRIVATE (obj);
+  TpsipConnectionPrivate *priv = TPSIP_CONNECTION_GET_PRIVATE (self);
+
   priv->sofia_home = su_home_new(sizeof (su_home_t));
   priv->auth_table = g_hash_table_new_full (g_direct_hash,
                                             g_direct_equal,
                                             NULL /* (GDestroyNotify) nua_handle_unref */,
                                             g_free);
+
+  tp_contacts_mixin_init ((GObject *) self,
+      G_STRUCT_OFFSET (TpsipConnection, contacts));
+
+  tp_base_connection_register_with_contacts_mixin ((TpBaseConnection *) self);
 }
 
 static void
@@ -406,6 +416,10 @@ static gboolean tpsip_connection_start_connecting (TpBaseConnection *base,
 static void
 tpsip_connection_class_init (TpsipConnectionClass *klass)
 {
+  static const gchar *interfaces_always_present[] = {
+      TP_IFACE_CONNECTION_INTERFACE_CONTACTS,
+      NULL };
+
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
   TpBaseConnectionClass *base_class =
     (TpBaseConnectionClass *)klass;
@@ -419,6 +433,7 @@ tpsip_connection_class_init (TpsipConnectionClass *klass)
   base_class->disconnected = tpsip_connection_disconnected;
   base_class->start_connecting = tpsip_connection_start_connecting;
   base_class->shut_down = tpsip_connection_shut_down;
+  base_class->interfaces_always_present = interfaces_always_present;
 
   g_type_class_add_private (klass, sizeof (TpsipConnectionPrivate));
 
@@ -545,6 +560,12 @@ tpsip_connection_class_init (TpsipConnectionClass *klass)
   INST_PROP(PROP_EXTRA_AUTH_PASSWORD);
 
 #undef INST_PROP
+
+  tp_dbus_properties_mixin_class_init (object_class,
+      G_STRUCT_OFFSET (TpsipConnectionClass, properties_class));
+
+  tp_contacts_mixin_class_init (object_class,
+      G_STRUCT_OFFSET (TpsipConnectionClass, contacts_class));
 }
 
 static gboolean
@@ -1002,6 +1023,8 @@ tpsip_connection_finalize (GObject *obj)
 
   g_free (priv->registrar_realm);
 
+  tp_contacts_mixin_finalize (obj);
+
   G_OBJECT_CLASS (tpsip_connection_parent_class)->finalize (obj);
 }
 
diff --git a/src/sip-connection.h b/src/sip-connection.h
index 6ddadb7..1629a5c 100644
--- a/src/sip-connection.h
+++ b/src/sip-connection.h
@@ -24,6 +24,8 @@
 #include <glib-object.h>
 
 #include <telepathy-glib/base-connection.h>
+#include <telepathy-glib/contacts-mixin.h>
+#include <telepathy-glib/dbus-properties-mixin.h>
 
 #include <tpsip/event-target.h>
 
@@ -47,10 +49,13 @@ typedef struct _TpsipConnectionPrivate TpsipConnectionPrivate;
 
 struct _TpsipConnectionClass {
     TpBaseConnectionClass parent_class;
+    TpDBusPropertiesMixinClass properties_class;
+    TpContactsMixinClass contacts_class;
 };
 
 struct _TpsipConnection {
     TpBaseConnection parent;
+    TpContactsMixin contacts;
 };
 
 /* TYPE MACROS */
-- 
1.5.6.3



More information about the Telepathy-commits mailing list