[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