[Telepathy-commits] [telepathy-gabble/master] Go through all tube channels in ListChannels: the old ones (Channel.Type.Tubes) and the new ones (Channel.Type.{Stream|DBus}Tube)
Alban Crequy
alban.crequy at collabora.co.uk
Mon Nov 3 11:20:53 PST 2008
---
src/private-tubes-factory.c | 6 ++++++
src/tubes-channel.c | 29 +++++++++++++++++++++++++++++
src/tubes-channel.h | 6 +++++-
3 files changed, 40 insertions(+), 1 deletions(-)
diff --git a/src/private-tubes-factory.c b/src/private-tubes-factory.c
index d4636ab..6004e9d 100644
--- a/src/private-tubes-factory.c
+++ b/src/private-tubes-factory.c
@@ -368,7 +368,13 @@ _foreach_slave (gpointer key,
g_assert (TP_IS_CHANNEL_IFACE (chan));
+ /* Add channels of type Channel.Type.Tubes */
data->foreach (chan, data->user_data);
+
+ /* Add channels of type Channel.Type.{Stream|DBus}Tube which live in the
+ * GabbleTubesChannel object */
+ gabble_tubes_channel_foreach (GABBLE_TUBES_CHANNEL (chan), data->foreach,
+ data->user_data);
}
static void
diff --git a/src/tubes-channel.c b/src/tubes-channel.c
index 20b36b4..901f7e4 100644
--- a/src/tubes-channel.c
+++ b/src/tubes-channel.c
@@ -664,6 +664,35 @@ _emit_d_bus_names_changed_foreach_data
TpHandle contact;
};
+struct _ForeachData
+{
+ GabbleExportableChannelFunc foreach;
+ gpointer user_data;
+};
+
+static void
+foreach_slave (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ GabbleTubeIface *tube = GABBLE_TUBE_IFACE (value);
+ struct _ForeachData *data = (struct _ForeachData *) user_data;
+
+ data->foreach (GABBLE_EXPORTABLE_CHANNEL (tube), data->user_data);
+}
+
+void gabble_tubes_channel_foreach (GabbleTubesChannel *self,
+ GabbleExportableChannelFunc foreach, gpointer user_data)
+{
+ struct _ForeachData data;
+ GabbleTubesChannelPrivate *priv = GABBLE_TUBES_CHANNEL_GET_PRIVATE (self);
+
+ data.user_data = user_data;
+ data.foreach = foreach;
+
+ g_hash_table_foreach (priv->tubes, foreach_slave, &data);
+}
+
static void
emit_d_bus_names_changed_foreach (gpointer key,
gpointer value,
diff --git a/src/tubes-channel.h b/src/tubes-channel.h
index 2024671..2f71b19 100644
--- a/src/tubes-channel.h
+++ b/src/tubes-channel.h
@@ -25,8 +25,9 @@
#include <telepathy-glib/base-connection.h>
-#include "muc-channel.h"
#include "bytestream-iface.h"
+#include "exportable-channel.h"
+#include "muc-channel.h"
G_BEGIN_DECLS
@@ -67,6 +68,9 @@ GType gabble_tubes_channel_get_type (void);
(G_TYPE_INSTANCE_GET_CLASS ((obj), GABBLE_TYPE_TUBES_CHANNEL,\
GabbleTubesChannelClass))
+void gabble_tubes_channel_foreach (GabbleTubesChannel *self,
+ GabbleExportableChannelFunc foreach, gpointer user_data);
+
void gabble_tubes_channel_presence_updated (GabbleTubesChannel *chan,
TpHandle contact, LmMessage *presence);
--
1.5.6.5
More information about the Telepathy-commits
mailing list