aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-tp-tube.c
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-04-20 05:04:18 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-04-20 05:04:18 +0800
commitc12336006558fc5c6975c50529b3174d90d12308 (patch)
tree6ccbad0fb3fe48f9562385e26a4b6866e5b0d14f /libempathy/empathy-tp-tube.c
parent80c96c4a4b5ba3b356165c5fd89922af91e7b82a (diff)
downloadgsoc2013-empathy-c12336006558fc5c6975c50529b3174d90d12308.tar
gsoc2013-empathy-c12336006558fc5c6975c50529b3174d90d12308.tar.gz
gsoc2013-empathy-c12336006558fc5c6975c50529b3174d90d12308.tar.bz2
gsoc2013-empathy-c12336006558fc5c6975c50529b3174d90d12308.tar.lz
gsoc2013-empathy-c12336006558fc5c6975c50529b3174d90d12308.tar.xz
gsoc2013-empathy-c12336006558fc5c6975c50529b3174d90d12308.tar.zst
gsoc2013-empathy-c12336006558fc5c6975c50529b3174d90d12308.zip
Rename empathy_offer_ipv4_stream_tube() to empathy_tp_tube_new_ipv4_stream_tube() and return the new EmpathyTpTube object.
svn path=/trunk/; revision=981
Diffstat (limited to 'libempathy/empathy-tp-tube.c')
-rw-r--r--libempathy/empathy-tp-tube.c165
1 files changed, 91 insertions, 74 deletions
diff --git a/libempathy/empathy-tp-tube.c b/libempathy/empathy-tp-tube.c
index b789bf07f..15356938c 100644
--- a/libempathy/empathy-tp-tube.c
+++ b/libempathy/empathy-tp-tube.c
@@ -384,6 +384,97 @@ empathy_tp_tube_new (TpChannel *channel, guint tube_id)
return tube;
}
+EmpathyTpTube *
+empathy_tp_tube_new_ipv4_stream_tube (EmpathyContact *contact,
+ const gchar *hostname,
+ guint port,
+ const gchar *service)
+{
+ MissionControl *mc;
+ McAccount *account;
+ TpConnection *connection;
+ TpChannel *channel;
+ gchar *object_path;
+ guint id;
+ GHashTable *params;
+ GValue *address;
+ GValue *control_param;
+ EmpathyTpTube *tube;
+ GError *error = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+ g_return_val_if_fail (hostname != NULL, NULL);
+ g_return_val_if_fail (service != NULL, NULL);
+
+ mc = empathy_mission_control_new ();
+ account = empathy_contact_get_account (contact);
+ connection = mission_control_get_tpconnection (mc, account, NULL);
+
+ if (!tp_cli_connection_run_request_channel (connection, -1,
+ TP_IFACE_CHANNEL_TYPE_TUBES, TP_HANDLE_TYPE_CONTACT,
+ empathy_contact_get_handle (contact), FALSE, &object_path, &error, NULL))
+ {
+ g_clear_error (&error);
+ g_object_unref (mc);
+ g_object_unref (account);
+ g_object_unref (connection);
+ return NULL;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Offering a new stream tube");
+
+ channel = tp_channel_new (connection, object_path,
+ TP_IFACE_CHANNEL_TYPE_TUBES, TP_HANDLE_TYPE_CONTACT,
+ empathy_contact_get_handle (contact), NULL);
+
+ params = g_hash_table_new (g_str_hash, g_str_equal);
+ address = g_new0 (GValue, 1);
+ g_value_init (address,
+ dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_UINT,
+ G_TYPE_INVALID));
+ g_value_take_boxed (address,
+ dbus_g_type_specialized_construct (dbus_g_type_get_struct ("GValueArray",
+ G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID)));
+ dbus_g_type_struct_set (address, 0, hostname, 1, port, G_MAXUINT);
+
+ /* localhost access control, variant is ignored */
+ control_param = g_new0 (GValue, 1);
+ g_value_init (control_param, G_TYPE_STRING);
+
+ if (!tp_cli_channel_type_tubes_run_offer_stream_tube (channel, -1,
+ service, params, TP_SOCKET_ADDRESS_TYPE_IPV4, address,
+ TP_SOCKET_ACCESS_CONTROL_LOCALHOST, control_param, &id, &error, NULL))
+ {
+ empathy_debug (DEBUG_DOMAIN, "Couldn't offer tube: %s", error->message);
+ g_clear_error (&error);
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Stream tube id=%d offered", id);
+
+ tube = g_object_new (EMPATHY_TYPE_TP_TUBE,
+ "channel", channel,
+ "id", id,
+ "initiator", empathy_contact_get_handle (contact),
+ "type", TP_SOCKET_ADDRESS_TYPE_IPV4,
+ "service", service,
+ "parameters", control_param,
+ "state", TP_TUBE_STATE_REMOTE_PENDING,
+ NULL);
+
+ g_object_unref (channel);
+ g_free (object_path);
+ g_hash_table_destroy (params);
+ g_value_reset (address);
+ g_value_reset (control_param);
+ g_free (address);
+ g_free (control_param);
+ g_object_unref (mc);
+ g_object_unref (account);
+ g_object_unref (connection);
+
+ return tube;
+}
+
static void
tp_tube_accept_stream_cb (TpChannel *proxy,
const GValue *address,
@@ -501,77 +592,3 @@ empathy_tp_tube_get_ipv4_socket (EmpathyTpTube *tube,
g_free (address);
}
-void
-empathy_offer_ipv4_stream_tube (EmpathyContact *contact,
- const gchar *hostname,
- guint port,
- const gchar *service)
-{
- MissionControl *mc;
- McAccount *account;
- TpConnection *connection;
- TpChannel *channel;
- gchar *object_path;
- guint id;
- GHashTable *params;
- GValue *address;
- GValue *control_param;
- GError *error = NULL;
-
- mc = empathy_mission_control_new ();
- account = empathy_contact_get_account (contact);
- connection = mission_control_get_tpconnection (mc, account, NULL);
-
- if (!tp_cli_connection_run_request_channel (connection, -1,
- TP_IFACE_CHANNEL_TYPE_TUBES, TP_HANDLE_TYPE_CONTACT,
- empathy_contact_get_handle (contact), FALSE, &object_path, &error, NULL))
- {
- g_clear_error (&error);
- g_object_unref (mc);
- g_object_unref (account);
- g_object_unref (connection);
- return;
- }
-
- empathy_debug (DEBUG_DOMAIN, "Offering a new stream tube");
-
- channel = tp_channel_new (connection, object_path,
- TP_IFACE_CHANNEL_TYPE_TUBES, TP_HANDLE_TYPE_CONTACT,
- empathy_contact_get_handle (contact), NULL);
-
- params = g_hash_table_new (g_str_hash, g_str_equal);
- address = g_new0 (GValue, 1);
- g_value_init (address,
- dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_UINT,
- G_TYPE_INVALID));
- g_value_take_boxed (address,
- dbus_g_type_specialized_construct (dbus_g_type_get_struct ("GValueArray",
- G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID)));
- dbus_g_type_struct_set (address, 0, hostname, 1, port, G_MAXUINT);
-
- /* localhost access control, variant is ignored */
- control_param = g_new0 (GValue, 1);
- g_value_init (control_param, G_TYPE_STRING);
-
- if (!tp_cli_channel_type_tubes_run_offer_stream_tube (channel, -1,
- service, params, TP_SOCKET_ADDRESS_TYPE_IPV4, address,
- TP_SOCKET_ACCESS_CONTROL_LOCALHOST, control_param, &id, &error, NULL))
- {
- empathy_debug (DEBUG_DOMAIN, "Couldn't offer tube: %s", error->message);
- g_clear_error (&error);
- }
-
- empathy_debug (DEBUG_DOMAIN, "Stream tube id=%d offered", id);
-
- g_object_unref (channel);
- g_free (object_path);
- g_hash_table_destroy (params);
- g_value_reset (address);
- g_value_reset (control_param);
- g_free (address);
- g_free (control_param);
- g_object_unref (mc);
- g_object_unref (account);
- g_object_unref (connection);
-}
-