]> git.0d.be Git - empathy.git/commitdiff
Change the way tube handler's object-path and bus-name are build.
authorXavier Claessens <xclaesse@src.gnome.org>
Sat, 19 Apr 2008 21:04:23 +0000 (21:04 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Sat, 19 Apr 2008 21:04:23 +0000 (21:04 +0000)
svn path=/trunk/; revision=984

libempathy/empathy-tube-handler.c
libempathy/empathy-tube-handler.h
src/empathy-tubes-chandler.c

index 0005a369d24840175e2a6b1af615968994cd7220..3e363837f5577414a6b79eb4d1cd74bcbc7fc192 100644 (file)
@@ -27,6 +27,7 @@
 #include <telepathy-glib/connection.h>
 #include <telepathy-glib/channel.h>
 #include <telepathy-glib/interfaces.h>
+#include <telepathy-glib/util.h>
 
 #include <extensions/extensions.h>
 
@@ -146,14 +147,21 @@ empathy_tube_handler_init (EmpathyTubeHandler *thandler)
 }
 
 EmpathyTubeHandler *
-empathy_tube_handler_new (const gchar *bus_name,
-                          const gchar *object_path)
+empathy_tube_handler_new (TpTubeType type, const gchar *service)
 {
-  EmpathyTubeHandler *thandler;
+  EmpathyTubeHandler *thandler = NULL;
   DBusGProxy *proxy;
   guint result;
+  gchar *bus_name;
+  gchar *object_path;
   GError *error = NULL;
 
+  g_return_val_if_fail (type <= TP_TUBE_TYPE_STREAM, NULL);
+  g_return_val_if_fail (service != NULL, NULL);
+
+  bus_name = empathy_tube_handler_build_bus_name (type, service);
+  object_path = empathy_tube_handler_build_object_path (type, service);
+
   proxy = dbus_g_proxy_new_for_name (tp_get_bus (), DBUS_SERVICE_DBUS,
       DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
 
@@ -164,15 +172,58 @@ empathy_tube_handler_new (const gchar *bus_name,
       empathy_debug (DEBUG_DOMAIN, "Failed to request name: %s",
           error ? error->message : "No error given");
       g_clear_error (&error);
-      return NULL;
+      goto OUT;
     }
 
-  g_object_unref (proxy);
-
   thandler = g_object_new (EMPATHY_TYPE_TUBE_HANDLER, NULL);
   dbus_g_connection_register_g_object (tp_get_bus (), object_path,
       G_OBJECT (thandler));
 
+OUT:
+  g_object_unref (proxy);
+  g_free (bus_name);
+  g_free (object_path);
+
   return thandler;
 }
 
+gchar *
+empathy_tube_handler_build_bus_name (TpTubeType type, const gchar *service)
+{
+  gchar *service_escaped;
+  gchar *str = NULL;
+
+  g_return_val_if_fail (type <= TP_TUBE_TYPE_STREAM, NULL);
+  g_return_val_if_fail (service != NULL, NULL);
+
+  service_escaped = tp_escape_as_identifier (service);
+  if (type == TP_TUBE_TYPE_DBUS)
+      str = g_strdup_printf ("org.gnome.Empathy.DTubeHandler.%s", service);
+  else if (type == TP_TUBE_TYPE_STREAM)
+      str = g_strdup_printf ("org.gnome.Empathy.StreamTubeHandler.%s", service);
+
+  g_free (service_escaped);
+
+  return str;
+}
+
+gchar *
+empathy_tube_handler_build_object_path (TpTubeType type, const gchar *service)
+{
+  gchar *service_escaped;
+  gchar *str = NULL;
+
+  g_return_val_if_fail (type <= TP_TUBE_TYPE_STREAM, NULL);
+  g_return_val_if_fail (service != NULL, NULL);
+
+  service_escaped = tp_escape_as_identifier (service);
+  if (type == TP_TUBE_TYPE_DBUS)
+      str = g_strdup_printf ("/org/gnome/Empathy/DTubeHandler/%s", service);
+  else if (type == TP_TUBE_TYPE_STREAM)
+      str = g_strdup_printf ("/org/gnome/Empathy/StreamTubeHandler/%s", service);
+
+  g_free (service_escaped);
+
+  return str;
+}
+
index 027e8f8e39091997209e83f13cbe4cdc8ad8371f..f20527a68fc8bd741453ccdb502287a040e87780 100644 (file)
@@ -24,6 +24,8 @@
 
 #include <glib.h>
 
+#include <telepathy-glib/enums.h>
+
 G_BEGIN_DECLS
 
 #define EMPATHY_TYPE_TUBE_HANDLER (empathy_tube_handler_get_type ())
@@ -50,8 +52,12 @@ struct _EmpathyTubeHandlerClass {
 };
 
 GType empathy_tube_handler_get_type (void) G_GNUC_CONST;
-EmpathyTubeHandler *empathy_tube_handler_new (const gchar *bus_name,
-    const gchar *object_path);
+EmpathyTubeHandler *empathy_tube_handler_new (TpTubeType type,
+    const gchar *service);
+gchar *empathy_tube_handler_build_bus_name (TpTubeType type,
+    const gchar *service);
+gchar *empathy_tube_handler_build_object_path (TpTubeType type,
+    const gchar *service);
 
 G_END_DECLS
 
index f23281875029f87b914857dd34f2471dfa77281d..ede164c91664a9d04c9e3bdddbd64afa1e31e551 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <extensions/extensions.h>
 
+#include <libempathy/empathy-tube-handler.h>
 #include <libempathy/empathy-chandler.h>
 #include <libempathy/empathy-debug.h>
 #include <libempathy/empathy-utils.h>
@@ -80,26 +81,12 @@ new_tube_cb (TpChannel *channel,
   if (state != TP_TUBE_STATE_LOCAL_PENDING)
       return;
 
-  /* Build the bus-name and object-path of the tube handler */
-  if (type == TP_TUBE_TYPE_DBUS)
-    {
-      thandler_bus_name =
-          g_strdup_printf ("org.gnome.Empathy.DTube.%s", service);
-      thandler_object_path =
-          g_strdup_printf ("/org/gnome/Empathy/DTube/%s", service);
-    }
-  else if (type == TP_TUBE_TYPE_STREAM)
-    {
-      thandler_bus_name =
-          g_strdup_printf ("org.gnome.Empathy.StreamTube.%s", service);
-      thandler_object_path =
-          g_strdup_printf ("/org/gnome/Empathy/StreamTube/%s", service);
-    }
-  else
-      return;
+  thandler_bus_name = empathy_tube_handler_build_bus_name (type, service);
+  thandler_object_path = empathy_tube_handler_build_object_path (type, service);
 
-  empathy_debug (DEBUG_DOMAIN, "Dispatching channel %p id=%d",
-      channel, id);
+  empathy_debug (DEBUG_DOMAIN, "Dispatching channel %p id=%d to tube handler: ",
+      "object_path=%s bus_name=%s", channel, id, thandler_object_path,
+      thandler_bus_name);
 
   /* Create the proxy for the tube handler */
   thandler = g_object_new (TP_TYPE_PROXY,