summaryrefslogtreecommitdiffstats
path: root/src/message.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-03-18 16:12:40 -0500
committerDenis Kenzior <denkenz@gmail.com>2011-03-18 18:31:14 -0500
commit9a37a672bfd1ef4902f34871d92aa21748385c77 (patch)
tree57073628e37ee5bea4252f65d86d3f115bc7151c /src/message.c
parent458ef95e5d8c7d3b542c5ff4186767f6fd9a9bd7 (diff)
downloadofono-9a37a672bfd1ef4902f34871d92aa21748385c77.tar.bz2
sms: Move CancelMessage(o) method
Move this method to the Message Cancel() method instead and introduce new __ofono_sms_txq_cancel API
Diffstat (limited to 'src/message.c')
-rw-r--r--src/message.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/message.c b/src/message.c
index 668a693b..7cc6538d 100644
--- a/src/message.c
+++ b/src/message.c
@@ -26,6 +26,7 @@
#include <string.h>
#include <gdbus.h>
#include <stdio.h>
+#include <errno.h>
#include "ofono.h"
#include "message.h"
@@ -76,8 +77,35 @@ static DBusMessage *message_get_properties(DBusConnection *conn,
return reply;
}
+static DBusMessage *message_cancel(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct message *m = data;
+ int res;
+
+ if (dbus_message_get_args(msg, NULL, DBUS_TYPE_INVALID) == FALSE)
+ return __ofono_error_invalid_args(msg);
+
+ if (m->state != MESSAGE_STATE_PENDING)
+ return __ofono_error_not_available(msg);
+
+ res = __ofono_sms_txq_cancel(__ofono_atom_get_data(m->atom), &m->uuid);
+
+ switch (res) {
+ case -ENOENT:
+ return __ofono_error_not_found(msg);
+ case -EPERM:
+ return __ofono_error_access_denied(msg);
+ case 0:
+ return dbus_message_new_method_return(msg);
+ default:
+ return __ofono_error_failed(msg);
+ }
+}
+
static GDBusMethodTable message_methods[] = {
{ "GetProperties", "", "a{sv}", message_get_properties },
+ { "Cancel", "", "", message_cancel },
{ }
};