[Telepathy-commits] [telepathy-mission-control/master] Allow derived objects to override connection creation

Alberto Mardegan alberto.mardegan at nokia.com
Mon Nov 17 01:44:55 PST 2008


Virtualize the creation of McdConnection objects, so that subclasses can
reimplement it.
---
 src/mcd-manager.c |   19 +++++++++++++++----
 src/mcd-manager.h |    2 ++
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/mcd-manager.c b/src/mcd-manager.c
index 5ff3c5e..e81da4a 100644
--- a/src/mcd-manager.c
+++ b/src/mcd-manager.c
@@ -646,6 +646,17 @@ _mcd_manager_get_property (GObject * obj, guint prop_id,
     }
 }
 
+static McdConnection *
+create_connection (McdManager *manager, McdAccount *account)
+{
+    McdManagerPrivate *priv = manager->priv;
+
+    return mcd_connection_new (priv->dbus_daemon,
+                               TP_PROXY (priv->tp_conn_mgr)->bus_name,
+                               priv->tp_conn_mgr, account,
+                               priv->dispatcher);
+}
+
 static void
 mcd_manager_class_init (McdManagerClass * klass)
 {
@@ -663,6 +674,8 @@ mcd_manager_class_init (McdManagerClass * klass)
     mission_class->connect = _mcd_manager_connect;
     mission_class->disconnect = _mcd_manager_disconnect;
 
+    klass->create_connection = create_connection;
+
     /* Properties */
     g_object_class_install_property
         (object_class, PROP_NAME,
@@ -829,10 +842,8 @@ mcd_manager_create_connection (McdManager *manager, McdAccount *account)
 	g_debug ("%s: Manager %s created", G_STRFUNC, priv->name);
     }
 
-    connection = mcd_connection_new (priv->dbus_daemon,
-				     TP_PROXY (priv->tp_conn_mgr)->bus_name,
-				     priv->tp_conn_mgr, account,
-				     priv->dispatcher);
+    connection = MCD_MANAGER_GET_CLASS (manager)->create_connection
+        (manager, account);
     mcd_operation_take_mission (MCD_OPERATION (manager),
 				MCD_MISSION (connection));
     g_debug ("%s: Created a connection %p for account: %s", G_STRFUNC,
diff --git a/src/mcd-manager.h b/src/mcd-manager.h
index aebded1..32c2459 100644
--- a/src/mcd-manager.h
+++ b/src/mcd-manager.h
@@ -58,6 +58,8 @@ struct _McdManager
 struct _McdManagerClass
 {
     McdOperationClass parent_class;
+    McdConnection *(*create_connection) (McdManager *manager,
+                                         McdAccount *account);
 };
 
 GType mcd_manager_get_type (void);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list