diff options
author | Denis Kenzior <denkenz@gmail.com> | 2011-03-18 16:12:40 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-03-18 18:31:14 -0500 |
commit | 9a37a672bfd1ef4902f34871d92aa21748385c77 (patch) | |
tree | 57073628e37ee5bea4252f65d86d3f115bc7151c /src/message.c | |
parent | 458ef95e5d8c7d3b542c5ff4186767f6fd9a9bd7 (diff) | |
download | ofono-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.c | 28 |
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 }, { } }; |