[Telepathy-commits] [telepathy-gabble/master] GabbleChannelManager: add create_channel, ensure_channel methods
Simon McVittie
simon.mcvittie at collabora.co.uk
Mon Nov 3 11:20:40 PST 2008
20080729183853-53eee-cffd01c49336fa34ec042883b7d77dec6b686530.gz
---
src/channel-manager.c | 36 ++++++++++++++++++++++++++++++++++++
src/channel-manager.h | 14 ++++++++++++++
2 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/src/channel-manager.c b/src/channel-manager.c
index 25d20ef..561c200 100644
--- a/src/channel-manager.c
+++ b/src/channel-manager.c
@@ -367,3 +367,39 @@ gabble_channel_manager_foreach_channel (GabbleChannelManager *manager,
}
/* ... else assume it has no channels, and do nothing */
}
+
+
+gboolean
+gabble_channel_manager_create_channel (GabbleChannelManager *manager,
+ gpointer request_token,
+ GHashTable *request_properties)
+{
+ GabbleChannelManagerIface *iface = GABBLE_CHANNEL_MANAGER_GET_INTERFACE (
+ manager);
+ GabbleChannelManagerRequestFunc method = iface->create_channel;
+
+ /* A missing implementation is equivalent to one that always returns FALSE,
+ * meaning "can't do that, ask someone else" */
+ if (method != NULL)
+ return method (manager, request_token, request_properties);
+ else
+ return FALSE;
+}
+
+
+gboolean
+gabble_channel_manager_ensure_channel (GabbleChannelManager *manager,
+ gpointer request_token,
+ GHashTable *request_properties)
+{
+ GabbleChannelManagerIface *iface = GABBLE_CHANNEL_MANAGER_GET_INTERFACE (
+ manager);
+ GabbleChannelManagerRequestFunc method = iface->ensure_channel;
+
+ /* A missing implementation is equivalent to one that always returns FALSE,
+ * meaning "can't do that, ask someone else" */
+ if (method != NULL)
+ return method (manager, request_token, request_properties);
+ else
+ return FALSE;
+}
diff --git a/src/channel-manager.h b/src/channel-manager.h
index 3cbb132..7c82b16 100644
--- a/src/channel-manager.h
+++ b/src/channel-manager.h
@@ -58,11 +58,25 @@ void gabble_channel_manager_foreach_channel (GabbleChannelManager *manager,
GabbleExportableChannelFunc func, gpointer user_data);
+typedef gboolean (*GabbleChannelManagerRequestFunc) (
+ GabbleChannelManager *manager, gpointer request_token,
+ GHashTable *request_properties);
+
+gboolean gabble_channel_manager_create_channel (GabbleChannelManager *manager,
+ gpointer request_token, GHashTable *request_properties);
+
+gboolean gabble_channel_manager_ensure_channel (GabbleChannelManager *manager,
+ gpointer request_token, GHashTable *request_properties);
+
+
struct _GabbleChannelManagerIface {
GTypeInterface parent;
GabbleChannelManagerForeachChannelFunc foreach_channel;
+ GabbleChannelManagerRequestFunc create_channel;
+ GabbleChannelManagerRequestFunc ensure_channel;
+
GCallback _future[8];
};
--
1.5.6.5
More information about the Telepathy-commits
mailing list