summaryrefslogtreecommitdiff
path: root/src/tube-stream.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2009-01-28 15:08:45 +0000
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2009-02-06 16:38:32 +0100
commitcdbcff9f329be2d22ef1f828fccb802a142fc869 (patch)
tree1190755f271c43d377f6b4bfe56361b74c1d08b2 /src/tube-stream.c
parent5437ef121eba94c4671aee3daaf7203e5c739463 (diff)
downloadtelepathy-salut-cdbcff9f329be2d22ef1f828fccb802a142fc869.tar.gz
add salut_tube_stream_offer
Diffstat (limited to 'src/tube-stream.c')
-rw-r--r--src/tube-stream.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/tube-stream.c b/src/tube-stream.c
index 06261164..962d5c56 100644
--- a/src/tube-stream.c
+++ b/src/tube-stream.c
@@ -109,6 +109,7 @@ enum
OPENED,
NEW_CONNECTION,
CLOSED,
+ OFFERED,
LAST_SIGNAL
};
@@ -1635,6 +1636,15 @@ salut_tube_stream_class_init (SalutTubeStreamClass *salut_tube_stream_class)
salut_signals_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+ signals[OFFERED] =
+ g_signal_new ("tube-offered",
+ G_OBJECT_CLASS_TYPE (salut_tube_stream_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+ 0,
+ NULL, NULL,
+ salut_signals_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
salut_tube_stream_class->dbus_props_class.interfaces = prop_interfaces;
tp_dbus_properties_mixin_class_init (object_class,
G_STRUCT_OFFSET (SalutTubeStreamClass, dbus_props_class));
@@ -2470,6 +2480,30 @@ salut_tube_stream_get_supported_socket_types (void)
return ret;
}
+gboolean
+salut_tube_stream_offer (SalutTubeStream *self,
+ GError **error)
+{
+ SalutTubeStreamPrivate *priv = SALUT_TUBE_STREAM_GET_PRIVATE (self);
+
+ g_assert (priv->state == SALUT_TUBE_CHANNEL_STATE_NOT_OFFERED);
+
+ if (priv->handle_type == TP_HANDLE_TYPE_CONTACT)
+ {
+ /* 1-1 tube. Send tube offer message */
+ /* TODO */
+ }
+ else
+ {
+ /* muc tube is open as soon it's offered */
+ priv->state = SALUT_TUBE_CHANNEL_STATE_OPEN;
+ g_signal_emit (G_OBJECT (self), signals[OPENED], 0);
+ }
+
+ g_signal_emit (G_OBJECT (self), signals[OFFERED], 0);
+ return TRUE;
+}
+
static void
tube_iface_init (gpointer g_iface,
gpointer iface_data)