[Telepathy-commits] [telepathy-glib/master] Add tp_message_mixin_has_pending_messages

Will Thompson will.thompson at collabora.co.uk
Thu Dec 18 10:41:48 PST 2008


---
 docs/reference/telepathy-glib-sections.txt |    1 +
 telepathy-glib/message-mixin.c             |   35 ++++++++++++++++++++++++++++
 telepathy-glib/message-mixin.h             |    3 ++
 3 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 789a4d5..d91db71 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -1564,6 +1564,7 @@ tp_message_mixin_messages_iface_init
 tp_message_mixin_get_dbus_property
 tp_message_mixin_sent
 tp_message_mixin_take_received
+tp_message_mixin_has_pending_messages
 tp_message_mixin_text_iface_init
 <SUBSECTION Private>
 TpMessageMixinPrivate
diff --git a/telepathy-glib/message-mixin.c b/telepathy-glib/message-mixin.c
index 4462915..9b7efc1 100644
--- a/telepathy-glib/message-mixin.c
+++ b/telepathy-glib/message-mixin.c
@@ -1360,6 +1360,41 @@ tp_message_mixin_take_received (GObject *object,
 
 
 /**
+ * tp_message_mixin_has_pending_messages:
+ * @object: An object with this mixin
+ * @first_sender: If not %NULL, used to store the sender of the oldest pending
+ *  message
+ *
+ * Return whether the channel @obj has unacknowledged messages. If so, and
+ * @first_sender is not %NULL, the handle of the sender of the first message
+ * is placed in it, without incrementing the handle's reference count.
+ *
+ * Returns: %TRUE if there are pending messages
+ */
+gboolean
+tp_message_mixin_has_pending_messages (GObject *object,
+                                       TpHandle *first_sender)
+{
+  TpMessageMixin *mixin = TP_MESSAGE_MIXIN (object);
+  TpMessage *msg = g_queue_peek_head (mixin->priv->pending);
+
+  if (msg != NULL && first_sender != NULL)
+    {
+      const GHashTable *header = tp_message_peek (msg, 0);
+      gboolean valid = TRUE;
+      TpHandle h = tp_asv_get_uint32 (header, "message-sender", &valid);
+
+      if (valid)
+        *first_sender = h;
+      else
+        g_warning ("%s: oldest message's message-sender is mistyped", G_STRFUNC);
+    }
+
+  return (msg != NULL);
+}
+
+
+/**
  * TpMessageMixinOutgoingMessage:
  * @flags: Flags indicating how this message should be sent
  * @parts: The parts that make up the message (an array of #GHashTable,
diff --git a/telepathy-glib/message-mixin.h b/telepathy-glib/message-mixin.h
index fd4083f..9fd2bc8 100644
--- a/telepathy-glib/message-mixin.h
+++ b/telepathy-glib/message-mixin.h
@@ -80,6 +80,9 @@ void tp_message_mixin_get_dbus_property (GObject *object, GQuark interface,
 
 guint tp_message_mixin_take_received (GObject *object, TpMessage *message);
 
+gboolean tp_message_mixin_has_pending_messages (GObject *object,
+    TpHandle *first_sender);
+
 
 /* Sending */
 
-- 
1.5.6.5




More information about the Telepathy-commits mailing list