[Telepathy-commits] [telepathy-salut/master] add salut_tube_stream_offer

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Wed Mar 11 09:15:25 PDT 2009


---
 src/tube-stream.c |   34 ++++++++++++++++++++++++++++++++++
 src/tube-stream.h |    2 ++
 2 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/src/tube-stream.c b/src/tube-stream.c
index 0626116..962d5c5 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)
diff --git a/src/tube-stream.h b/src/tube-stream.h
index 5326905..d7b2558 100644
--- a/src/tube-stream.h
+++ b/src/tube-stream.h
@@ -86,6 +86,8 @@ gboolean salut_tube_stream_check_params (TpSocketAddressType address_type,
 
 GHashTable * salut_tube_stream_get_supported_socket_types (void);
 
+gboolean salut_tube_stream_offer (SalutTubeStream *self, GError **error);
+
 G_END_DECLS
 
 #endif /* #ifndef __SALUT_TUBE_STREAM_H__ */
-- 
1.5.6.5




More information about the telepathy-commits mailing list