From fb567c8a20a386598c1b43e09edaa4692ac27685 Mon Sep 17 00:00:00 2001 From: Vinicius Costa Gomes Date: Wed, 5 Nov 2008 16:57:13 -0300 Subject: [PATCH] obexd: Adds Error to Agent methods We needed a way to inform the agent that some error happened during a transfer. --- obexd/client/session.c | 45 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/obexd/client/session.c b/obexd/client/session.c index 25b04be83..3e6e54b06 100644 --- a/obexd/client/session.c +++ b/obexd/client/session.c @@ -481,11 +481,34 @@ static void agent_notify_complete(DBusConnection *conn, const char *agent_name, g_dbus_send_message(conn, message); } +static void agent_notify_error(DBusConnection *conn, const char *agent_name, + const char *agent_path, const char *transfer_path, + const char *error_msg) +{ + DBusMessage *message; + + if (agent_name == NULL || agent_path == NULL) + return; + + message = dbus_message_new_method_call(agent_name, + agent_path, AGENT_INTERFACE, "Error"); + + dbus_message_set_no_reply(message, TRUE); + + dbus_message_append_args(message, + DBUS_TYPE_OBJECT_PATH, &transfer_path, + DBUS_TYPE_STRING, &error_msg, + DBUS_TYPE_INVALID); + + g_dbus_send_message(conn, message); +} + static void abort_transfer(struct session_data *session) { - agent_notify_complete(session->conn, session->agent_name, - session->agent_path, session->transfer_path); + agent_notify_error(session->conn, session->agent_name, + session->agent_path, session->transfer_path, + "The transfer was cancelled"); gw_obex_xfer_abort(session->xfer, NULL); @@ -885,8 +908,13 @@ static void get_xfer_progress(GwObexXfer *xfer, gpointer user_data) complete: - agent_notify_complete(session->conn, session->agent_name, - session->agent_path, session->transfer_path); + if (ret == TRUE) + agent_notify_complete(session->conn, session->agent_name, + session->agent_path, session->transfer_path); + else + agent_notify_error(session->conn, session->agent_name, + session->agent_path, session->transfer_path, + "Error getting object"); gw_obex_xfer_close(xfer, NULL); gw_obex_xfer_free(xfer); @@ -1172,8 +1200,13 @@ static void put_xfer_progress(GwObexXfer *xfer, gpointer user_data) complete: - agent_notify_complete(session->conn, session->agent_name, - session->agent_path, session->transfer_path); + if (len == 0) + agent_notify_complete(session->conn, session->agent_name, + session->agent_path, session->transfer_path); + else + agent_notify_error(session->conn, session->agent_name, + session->agent_path, session->transfer_path, + "Error sending object"); gw_obex_xfer_close(session->xfer, NULL); gw_obex_xfer_free(session->xfer); -- 2.47.3