aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4>2008-04-20 05:04:23 +0800
committerxclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4>2008-04-20 05:04:23 +0800
commitf94eb5c571016ed3cd6285682efebab761f2319f (patch)
tree1af396319a7f82ae06a51bd40addd8bc2a583fa2
parent550ca2b42575679a2c1d02b67ad189e715f360d2 (diff)
downloadgsoc2013-empathy-f94eb5c571016ed3cd6285682efebab761f2319f.tar
gsoc2013-empathy-f94eb5c571016ed3cd6285682efebab761f2319f.tar.gz
gsoc2013-empathy-f94eb5c571016ed3cd6285682efebab761f2319f.tar.bz2
gsoc2013-empathy-f94eb5c571016ed3cd6285682efebab761f2319f.tar.lz
gsoc2013-empathy-f94eb5c571016ed3cd6285682efebab761f2319f.tar.xz
gsoc2013-empathy-f94eb5c571016ed3cd6285682efebab761f2319f.tar.zst
gsoc2013-empathy-f94eb5c571016ed3cd6285682efebab761f2319f.zip
Change the way tube handler's object-path and bus-name are build.
git-svn-id: svn+ssh://svn.gnome.org/svn/empathy/trunk@984 4ee84921-47dd-4033-b63a-18d7a039a3e4
-rw-r--r--libempathy/empathy-tube-handler.c63
-rw-r--r--libempathy/empathy-tube-handler.h10
-rw-r--r--src/empathy-tubes-chandler.c25
3 files changed, 71 insertions, 27 deletions
diff --git a/libempathy/empathy-tube-handler.c b/libempathy/empathy-tube-handler.c
index 0005a369d..3e363837f 100644
--- a/libempathy/empathy-tube-handler.c
+++ b/libempathy/empathy-tube-handler.c
@@ -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;
+}
+
diff --git a/libempathy/empathy-tube-handler.h b/libempathy/empathy-tube-handler.h
index 027e8f8e3..f20527a68 100644
--- a/libempathy/empathy-tube-handler.h
+++ b/libempathy/empathy-tube-handler.h
@@ -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
diff --git a/src/empathy-tubes-chandler.c b/src/empathy-tubes-chandler.c
index f23281875..ede164c91 100644
--- a/src/empathy-tubes-chandler.c
+++ b/src/empathy-tubes-chandler.c
@@ -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,