* [PATCH 0/4] mmsd: delivery-report flag
@ 2012-07-23 14:18 Ronald Tessier
2012-07-23 14:18 ` [PATCH 1/4] store: Add utilities for mms settings file access Ronald Tessier
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Ronald Tessier @ 2012-07-23 14:18 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 809 bytes --]
This patch concerns mmsd and is related to delivery-report flag setting.
A specific delivery-report flag is defined for mmsd, it is managed via a DBus
api (SetProperty, described in the doc section) and stored in a setting file.
Ronald Tessier (4):
store: Add utilities for mms settings file access
service: Load delivery-report from mms settings
service: Add DBus method to set delivery-report
test: Add a script to set the delivery-report flag
doc/service-api.txt | 6 ++++
src/service.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++
src/store.c | 56 ++++++++++++++++++++++++++++++++
src/store.h | 4 +++
test/set-dr | 25 +++++++++++++++
5 files changed, 179 insertions(+)
create mode 100755 test/set-dr
--
1.7.9.5
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/4] store: Add utilities for mms settings file access
2012-07-23 14:18 [PATCH 0/4] mmsd: delivery-report flag Ronald Tessier
@ 2012-07-23 14:18 ` Ronald Tessier
2012-07-23 14:18 ` [PATCH 2/4] service: Load delivery-report from mms settings Ronald Tessier
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Ronald Tessier @ 2012-07-23 14:18 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2126 bytes --]
---
src/store.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/store.h | 4 ++++
2 files changed, 60 insertions(+)
diff --git a/src/store.c b/src/store.c
index 88d9e77..b09c17b 100644
--- a/src/store.c
+++ b/src/store.c
@@ -358,3 +358,59 @@ void mms_store_meta_close(const char *service_id, const char *uuid,
g_key_file_free(keyfile);
}
+
+GKeyFile *mms_settings_open(const char *service_id, const char *store)
+{
+ GKeyFile *keyfile;
+ char *path;
+
+ if (store == NULL)
+ return NULL;
+
+ path = mms_store_get_path(service_id, store);
+ if (path == NULL)
+ return NULL;
+
+ if (create_dirs(path, S_IRUSR | S_IWUSR | S_IXUSR) != 0) {
+ mms_error("Failed to create path %s", path);
+
+ g_free(path);
+ return NULL;
+ }
+
+ keyfile = g_key_file_new();
+
+ g_key_file_load_from_file(keyfile, path, 0, NULL);
+
+ g_free(path);
+
+ return keyfile;
+}
+
+static void settings_sync(const char *service_id, const char *store,
+ GKeyFile *keyfile)
+{
+ char *path;
+ char *data;
+ gsize length = 0;
+
+ path = mms_store_get_path(service_id, store);
+ if (path == NULL)
+ return;
+
+ data = g_key_file_to_data(keyfile, &length, NULL);
+
+ g_file_set_contents(path, data, length, NULL);
+
+ g_free(data);
+ g_free(path);
+}
+
+void mms_settings_close(const char *service_id, const char *store,
+ GKeyFile *keyfile, gboolean save)
+{
+ if (save == TRUE)
+ settings_sync(service_id, store, keyfile);
+
+ g_key_file_free(keyfile);
+}
diff --git a/src/store.h b/src/store.h
index 21f11be..ba2c080 100644
--- a/src/store.h
+++ b/src/store.h
@@ -28,3 +28,7 @@ char *mms_store_get_path(const char *service_id, const char *uuid);
GKeyFile *mms_store_meta_open(const char *service_id, const char *uuid);
void mms_store_meta_close(const char *service_id, const char *uuid,
GKeyFile *keyfile, gboolean save);
+
+GKeyFile *mms_settings_open(const char *service_id, const char *store);
+void mms_settings_close(const char *service_id, const char *store,
+ GKeyFile *keyfile, gboolean save);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] service: Load delivery-report from mms settings
2012-07-23 14:18 [PATCH 0/4] mmsd: delivery-report flag Ronald Tessier
2012-07-23 14:18 ` [PATCH 1/4] store: Add utilities for mms settings file access Ronald Tessier
@ 2012-07-23 14:18 ` Ronald Tessier
2012-07-23 14:18 ` [PATCH 3/4] service: Add DBus method to set delivery-report Ronald Tessier
2012-07-23 14:18 ` [PATCH 4/4] test: Add a script to set the delivery-report flag Ronald Tessier
3 siblings, 0 replies; 6+ messages in thread
From: Ronald Tessier @ 2012-07-23 14:18 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2552 bytes --]
---
src/service.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/src/service.c b/src/service.c
index 83e1fe1..7243efd 100644
--- a/src/service.c
+++ b/src/service.c
@@ -57,6 +57,9 @@
#define MAX_ATTACHMENTS_NUMBER 25
#define MAX_ATTEMPTS 3
+#define SETTINGS_STORE "mms"
+#define SETTINGS_GROUP "Settings"
+
#define uninitialized_var(x) x = x
static const char *ctl_chars = "\x01\x02\x03\x04\x05\x06\x07\x08\x0A"
@@ -84,6 +87,8 @@ struct mms_service {
guint current_request_id;
GWeb *web;
GHashTable *messages;
+ GKeyFile *settings;
+ gboolean use_delivery_reports;
};
enum mms_request_type {
@@ -111,6 +116,28 @@ static DBusConnection *connection;
static guint32 transaction_id_start = 0;
+static void mms_load_settings(struct mms_service *service)
+{
+ GError *error;
+
+ service->settings = mms_settings_open(service->identity,
+ SETTINGS_STORE);
+ if (service->settings == NULL)
+ return;
+
+ error = NULL;
+ service->use_delivery_reports =
+ g_key_file_get_boolean(service->settings, SETTINGS_GROUP,
+ "UseDeliveryReports", &error);
+
+ if (error) {
+ g_error_free(error);
+ g_key_file_set_boolean(service->settings, SETTINGS_GROUP,
+ "UseDeliveryReports",
+ service->use_delivery_reports);
+ }
+}
+
static void mms_request_destroy(struct mms_request *request)
{
g_free(request->data_path);
@@ -903,6 +930,8 @@ static DBusMessage *send_message(DBusConnection *conn,
msg->sr.status = MMS_MESSAGE_STATUS_DRAFT;
+ msg->sr.dr = service->use_delivery_reports;
+
if (send_message_get_args(dbus_msg, msg) == FALSE) {
mms_debug("Invalid arguments");
@@ -1407,6 +1436,8 @@ int mms_service_register(struct mms_service *service)
emit_service_added(service);
+ mms_load_settings(service);
+
load_messages(service);
return 0;
@@ -1425,6 +1456,17 @@ int mms_service_unregister(struct mms_service *service)
if (service->messages != NULL)
destroy_message_table(service);
+ if (service->settings != NULL) {
+ g_key_file_set_boolean(service->settings, SETTINGS_GROUP,
+ "UseDeliveryReports",
+ service->use_delivery_reports);
+
+ mms_settings_close(service->identity, SETTINGS_STORE,
+ service->settings, TRUE);
+
+ service->settings = NULL;
+ }
+
if (g_dbus_unregister_interface(connection, service->path,
MMS_SERVICE_INTERFACE) == FALSE) {
mms_error("Failed to unregister service interface");
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] service: Add DBus method to set delivery-report
2012-07-23 14:18 [PATCH 0/4] mmsd: delivery-report flag Ronald Tessier
2012-07-23 14:18 ` [PATCH 1/4] store: Add utilities for mms settings file access Ronald Tessier
2012-07-23 14:18 ` [PATCH 2/4] service: Load delivery-report from mms settings Ronald Tessier
@ 2012-07-23 14:18 ` Ronald Tessier
2012-07-23 14:18 ` [PATCH 4/4] test: Add a script to set the delivery-report flag Ronald Tessier
3 siblings, 0 replies; 6+ messages in thread
From: Ronald Tessier @ 2012-07-23 14:18 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2547 bytes --]
---
doc/service-api.txt | 6 ++++++
src/service.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+)
diff --git a/doc/service-api.txt b/doc/service-api.txt
index 02396ff..f247d3a 100644
--- a/doc/service-api.txt
+++ b/doc/service-api.txt
@@ -82,6 +82,12 @@ Methods array{object,dict} GetMessages()
Possible Errors: [service].Error.InvalidArguments
+ void SetProperty(string name, variant value)
+
+ Changes the value of the specified property.
+
+ Possible Errors: [service].Error.InvalidArguments
+
Signals MessageAdded(object path, dict properties)
diff --git a/src/service.c b/src/service.c
index 7243efd..c1ca4ab 100644
--- a/src/service.c
+++ b/src/service.c
@@ -887,6 +887,48 @@ out:
return reply;
}
+static DBusMessage *set_property(DBusConnection *conn, DBusMessage *dbus_msg,
+ void *data)
+{
+ struct mms_service *service = data;
+ DBusMessageIter iter;
+ DBusMessageIter var;
+ const char *property;
+
+ if (!dbus_message_iter_init(dbus_msg, &iter))
+ return __mms_error_invalid_args(dbus_msg);
+
+ if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
+ return __mms_error_invalid_args(dbus_msg);
+
+ dbus_message_iter_get_basic(&iter, &property);
+ dbus_message_iter_next(&iter);
+
+ if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT)
+ return __mms_error_invalid_args(dbus_msg);
+
+ dbus_message_iter_recurse(&iter, &var);
+
+ if (!strcmp(property, "UseDeliveryReports")) {
+ dbus_bool_t value;
+
+ if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_BOOLEAN)
+ return __mms_error_invalid_args(dbus_msg);
+
+ dbus_message_iter_get_basic(&var, &value);
+
+ if (service->use_delivery_reports != (gboolean) value) {
+ DBG("use_delivery_reports = %d", value);
+
+ service->use_delivery_reports = value;
+ }
+
+ return g_dbus_create_reply(dbus_msg, DBUS_TYPE_INVALID);
+ }
+
+ return __mms_error_invalid_args(dbus_msg);
+}
+
static gboolean mms_attachment_is_smil(const struct mms_attachment *part)
{
if (g_str_has_prefix(part->content_type, "application/smil"))
@@ -1023,6 +1065,10 @@ static const GDBusMethodTable service_methods[] = {
GDBUS_ARGS({ "number", "s" }, { "count", "s" }),
GDBUS_ARGS({ "messages_with_properties", "a(oa{sv}" }),
get_conversation) },
+ { GDBUS_METHOD("SetProperty",
+ GDBUS_ARGS({ "property", "s" }, { "value", "v" }),
+ NULL,
+ set_property) },
{ }
};
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] test: Add a script to set the delivery-report flag
2012-07-23 14:18 [PATCH 0/4] mmsd: delivery-report flag Ronald Tessier
` (2 preceding siblings ...)
2012-07-23 14:18 ` [PATCH 3/4] service: Add DBus method to set delivery-report Ronald Tessier
@ 2012-07-23 14:18 ` Ronald Tessier
3 siblings, 0 replies; 6+ messages in thread
From: Ronald Tessier @ 2012-07-23 14:18 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 892 bytes --]
---
test/set-dr | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100755 test/set-dr
diff --git a/test/set-dr b/test/set-dr
new file mode 100755
index 0000000..99c72b1
--- /dev/null
+++ b/test/set-dr
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+import sys
+import dbus
+
+bus = dbus.SessionBus()
+
+manager = dbus.Interface(bus.get_object('org.ofono.mms', '/org/ofono/mms'),
+ 'org.ofono.mms.Manager')
+
+services = manager.GetServices()
+path = services[0][0]
+
+service = dbus.Interface(bus.get_object('org.ofono.mms', path),
+ 'org.ofono.mms.Service')
+
+if len(sys.argv) > 1:
+ allowed = dbus.Boolean(int(sys.argv[1]))
+else:
+ allowed = dbus.Boolean(1)
+
+service.SetProperty("UseDeliveryReports", allowed)
+
+print "Setting delivery report use for %s...(UseDeliveryReports=%d)" %\
+ (path, allowed)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 0/4] mmsd: delivery-report flag
@ 2012-08-06 15:30 Ronald Tessier
0 siblings, 0 replies; 6+ messages in thread
From: Ronald Tessier @ 2012-08-06 15:30 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 809 bytes --]
This patch concerns mmsd and is related to delivery-report flag setting.
A specific delivery-report flag is defined for mmsd, it is managed via a DBus
api (SetProperty, described in the doc section) and stored in a setting file.
Ronald Tessier (4):
store: Add utilities for mms settings file access
service: Load delivery-report from mms settings
service: Add DBus method to set delivery-report
test: Add a script to set the delivery-report flag
doc/service-api.txt | 6 ++++
src/service.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++
src/store.c | 56 ++++++++++++++++++++++++++++++++
src/store.h | 4 +++
test/set-dr | 25 +++++++++++++++
5 files changed, 179 insertions(+)
create mode 100755 test/set-dr
--
1.7.9.5
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-08-06 15:30 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-23 14:18 [PATCH 0/4] mmsd: delivery-report flag Ronald Tessier
2012-07-23 14:18 ` [PATCH 1/4] store: Add utilities for mms settings file access Ronald Tessier
2012-07-23 14:18 ` [PATCH 2/4] service: Load delivery-report from mms settings Ronald Tessier
2012-07-23 14:18 ` [PATCH 3/4] service: Add DBus method to set delivery-report Ronald Tessier
2012-07-23 14:18 ` [PATCH 4/4] test: Add a script to set the delivery-report flag Ronald Tessier
2012-08-06 15:30 [PATCH 0/4] mmsd: " Ronald Tessier
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.