[telepathy-doc/master] D-Bus tube ex

Davyd Madeley davyd at madeley.id.au
Mon Jul 20 19:43:32 PDT 2009


---
 docs/examples/glib_dbus_tube/accept-tube.c |   47 +++++++++++++++++++++++++++-
 docs/examples/glib_dbus_tube/offer-tube.c  |   42 +++++++++++++++++++++++++
 2 files changed, 88 insertions(+), 1 deletions(-)

diff --git a/docs/examples/glib_dbus_tube/accept-tube.c b/docs/examples/glib_dbus_tube/accept-tube.c
index 4c01f12..cee084d 100644
--- a/docs/examples/glib_dbus_tube/accept-tube.c
+++ b/docs/examples/glib_dbus_tube/accept-tube.c
@@ -28,6 +28,40 @@ handle_error (const GError *error)
 }
 
 static void
+tube_state_changed_cb (TpChannel *channel,
+		       guint      state,
+		       gpointer   user_data,
+		       GObject   *weak_obj)
+{
+	g_print ("Tube state changed %i\n", state);
+}
+
+static void
+dbus_names_changed_cb (TpChannel    *channel,
+		       GHashTable   *added,
+		       const GArray *removed,
+		       gpointer      user_data,
+		       GObject      *weak_obj)
+{
+	g_print ("::DBusNamesChanged\n");
+
+	GHashTableIter iter;
+	gpointer key, value;
+	guint handle;
+	char *address;
+
+	g_print ("Added:\n");
+	g_hash_table_iter_init (&iter, added);
+	while (g_hash_table_iter_next (&iter, &key, &value))
+	{
+		handle = GPOINTER_TO_UINT (key);
+		address = (char *) value;
+
+		g_print (" - %u: %s\n", handle, address);
+	}
+}
+
+static void
 tube_accept_cb (TpChannel	*channel,
 	        const char	*address,
 	        const GError	*in_error,
@@ -36,7 +70,7 @@ tube_accept_cb (TpChannel	*channel,
 {
 	handle_error (in_error);
 
-	g_print (" > tube_offer_cb (%s)\n", address);
+	g_print (" > tube_accept_cb (%s)\n", address);
 }
 
 static void
@@ -44,9 +78,20 @@ channel_ready (TpChannel	*channel,
 	       const GError	*in_error,
 	       gpointer		 user_data)
 {
+	GError *error = NULL;
 	g_print (" > channel_ready (%s)\n",
 			tp_channel_get_identifier (channel));
 
+	tp_cli_channel_interface_tube_connect_to_tube_channel_state_changed (
+			channel, tube_state_changed_cb,
+			NULL, NULL, NULL, &error);
+	handle_error (error);
+
+	tp_cli_channel_type_dbus_tube_connect_to_dbus_names_changed (
+			channel, dbus_names_changed_cb,
+			NULL, NULL, NULL, &error);
+	handle_error (error);
+
 	/* accept the channel */
 	tp_cli_channel_type_dbus_tube_call_accept (channel, -1,
 			TP_SOCKET_ACCESS_CONTROL_LOCALHOST,
diff --git a/docs/examples/glib_dbus_tube/offer-tube.c b/docs/examples/glib_dbus_tube/offer-tube.c
index 6cf5871..d69b5c2 100644
--- a/docs/examples/glib_dbus_tube/offer-tube.c
+++ b/docs/examples/glib_dbus_tube/offer-tube.c
@@ -28,6 +28,37 @@ handle_error (const GError *error)
 }
 
 static void
+tube_state_changed_cb (TpChannel *channel,
+		       guint	  state,
+		       gpointer	  user_data,
+		       GObject	 *weak_obj)
+{
+	g_print ("Tube state changed %i\n", state);
+}
+
+static void
+dbus_names_changed_cb (TpChannel    *channel,
+		       GHashTable   *added,
+		       const GArray *removed,
+		       gpointer      user_data,
+		       GObject      *weak_obj)
+{
+	g_print ("::DBusNamesChanged\n");
+
+	GHashTableIter iter;
+	guint key;
+	char *value;
+
+	g_print ("Added:\n");
+	g_hash_table_iter_init (&iter, added);
+	while (g_hash_table_iter_next (&iter,
+				(gpointer *) &key, (gpointer *) &value))
+	{
+		g_print (" - %u: %s\n", key, value);
+	}
+}
+
+static void
 tube_offer_cb (TpChannel	*channel,
 	       const char	*address,
 	       const GError	*in_error,
@@ -44,9 +75,20 @@ channel_ready (TpChannel	*channel,
 	       const GError	*in_error,
 	       gpointer		 user_data)
 {
+	GError *error = NULL;
 	g_print (" > channel_ready (%s)\n",
 			tp_channel_get_identifier (channel));
 
+	tp_cli_channel_interface_tube_connect_to_tube_channel_state_changed (
+			channel, tube_state_changed_cb,
+			NULL, NULL, NULL, &error);
+	handle_error (error);
+
+	tp_cli_channel_type_dbus_tube_connect_to_dbus_names_changed (
+			channel, dbus_names_changed_cb,
+			NULL, NULL, NULL, &error);
+	handle_error (error);
+
 	g_print ("Offering Tube...\n");
 	GHashTable *parameters = tp_asv_new (
 			"SomeKey", G_TYPE_STRING, "SomeValue",
-- 
1.5.6.5




More information about the telepathy-commits mailing list