All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ronald Tessier <ronald.tessier@linux.intel.com>
To: ofono@ofono.org
Subject: [PATCH 10/12] service: Send a delivery changed signal
Date: Fri, 24 Aug 2012 15:06:09 +0200	[thread overview]
Message-ID: <1345813571-15775-11-git-send-email-ronald.tessier@linux.intel.com> (raw)
In-Reply-To: <1345813571-15775-1-git-send-email-ronald.tessier@linux.intel.com>

[-- Attachment #1: Type: text/plain, Size: 2801 bytes --]

---
 src/service.c |   48 +++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 45 insertions(+), 3 deletions(-)

diff --git a/src/service.c b/src/service.c
index 44184cb..ba23b4a 100644
--- a/src/service.c
+++ b/src/service.c
@@ -218,6 +218,40 @@ static void emit_msg_status_changed(const char *path, const char *new_status)
 	g_dbus_send_message(connection, signal);
 }
 
+static void emit_msg_delivery_changed(const char *path, const char *rec,
+							const char *status)
+{
+	DBusMessage *signal;
+	DBusMessageIter iter;
+	DBusMessageIter variant;
+	const char *type = "delivery_report";
+
+	signal = dbus_message_new_signal(path, MMS_MESSAGE_INTERFACE,
+							"ReportChanged");
+	if (signal == NULL)
+		return;
+
+	dbus_message_iter_init_append(signal, &iter);
+
+	dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &type);
+
+	dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
+					DBUS_TYPE_STRING_AS_STRING, &variant);
+
+	dbus_message_iter_append_basic(&variant, DBUS_TYPE_STRING, &rec);
+
+	dbus_message_iter_close_container(&iter, &variant);
+
+	dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
+					DBUS_TYPE_STRING_AS_STRING, &variant);
+
+	dbus_message_iter_append_basic(&variant, DBUS_TYPE_STRING, &status);
+
+	dbus_message_iter_close_container(&iter, &variant);
+
+	g_dbus_send_message(connection, signal);
+}
+
 static DBusMessage *msg_mark_read(DBusConnection *conn,
 					DBusMessage *msg, void *user_data)
 {
@@ -269,6 +303,10 @@ static const GDBusMethodTable message_methods[] = {
 static const GDBusSignalTable message_signals[] = {
 	{ GDBUS_SIGNAL("PropertyChanged",
 			GDBUS_ARGS({ "name", "s" }, { "value", "v" })) },
+	{ GDBUS_SIGNAL("ReportChanged",
+			GDBUS_ARGS({ "name", "s" },
+					{ "rec", "v" },
+					{ "status", "v" })) },
 	{ }
 };
 
@@ -1369,6 +1407,7 @@ static void process_delivery_ind_notification(struct mms_service *service,
 	char uuid[MMS_META_UUID_LEN + 1];
 	char *path;
 	char *to;
+	const char *new_status;
 
 	if (get_meta_by_msgid(service, di_msg->di.msgid, uuid) == FALSE)
 		goto bail;
@@ -1381,15 +1420,18 @@ static void process_delivery_ind_notification(struct mms_service *service,
 
 	mms_address_to_string(to);
 
-	g_key_file_set_string(meta, "delivery_status", to,
-				delivery_status[di_msg->di.dr_status - 127]);
+	new_status = delivery_status[di_msg->di.dr_status - 127];
 
-	g_free(to);
+	g_key_file_set_string(meta, "delivery_status", to, new_status);
 
 	mms_store_meta_close(service->identity, uuid, meta, TRUE);
 
 	path = g_strdup_printf("%s/%s/%s", MMS_PATH, service->identity, uuid);
 
+	emit_msg_delivery_changed(path, to, new_status);
+
+	g_free(to);
+
 	g_free(path);
 
 bail:
-- 
1.7.9.5


  parent reply	other threads:[~2012-08-24 13:06 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
2012-08-24 13:06 ` [PATCH 01/12] mmsutil: Define mms_delivery_ind struct Ronald Tessier
2012-08-28 13:41   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 02/12] mmsutil: Decode delivery_ind msg Ronald Tessier
2012-08-28 13:41   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 03/12] service: Store msg_id provided by M-Send.conf PDU Ronald Tessier
2012-08-28 13:45   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 04/12] service: Move mms_address_to_string() up Ronald Tessier
2012-08-28 13:46   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 05/12] service: Add a group [delivery_status] in the msg status Ronald Tessier
2012-08-28 13:50   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 06/12] service: Support M-Delivery.ind in mms_service_push_notify() Ronald Tessier
2012-08-28 13:50   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 07/12] service: Support delivery_ind notif on start Ronald Tessier
2012-08-28 14:25   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 08/12] store: Define MMS_META_UUID_XXX len and suffix Ronald Tessier
2012-08-28 14:25   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 09/12] service: Process delivery_ind notification Ronald Tessier
2012-08-28 14:26   ` Denis Kenzior
2012-08-24 13:06 ` Ronald Tessier [this message]
2012-08-24 13:06 ` [PATCH 11/12] test: Add ReportChanged to monitored signals Ronald Tessier
2012-08-24 13:06 ` [PATCH 12/12] doc: Add ReportChanged signal description Ronald Tessier
2012-08-28 14:29   ` Denis Kenzior
2012-09-04 15:26     ` Ronald Tessier
2012-09-04 19:20       ` Denis Kenzior
  -- strict thread matches above, loose matches on Subject: below --
2012-08-17 14:35 [PATCH 00/12] mmsd: Support Delivery Report notification Ronald Tessier
2012-08-17 14:35 ` [PATCH 10/12] service: Send a delivery changed signal Ronald Tessier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1345813571-15775-11-git-send-email-ronald.tessier@linux.intel.com \
    --to=ronald.tessier@linux.intel.com \
    --cc=ofono@ofono.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.