[Telepathy-commits] [telepathy-gabble/master] GabbleChannelManager: add create_channel, ensure_channel methods

Simon McVittie simon.mcvittie at collabora.co.uk
Wed Aug 20 09:38:29 PDT 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.3




More information about the Telepathy-commits mailing list