From ce7b4cbd4c12055bbe6809b7e1480a0caa6f39d2 Mon Sep 17 00:00:00 2001 From: Mikel Astiz Date: Wed, 30 May 2012 17:50:14 +0200 Subject: [PATCH] obexd: Add transfer event-reporting signals These signals replace the old agent-based notification mechanism. --- obexd/client/transfer.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c index 3cc96a7fc..eddf8697d 100644 --- a/obexd/client/transfer.c +++ b/obexd/client/transfer.c @@ -196,6 +196,9 @@ static const GDBusMethodTable obc_transfer_methods[] = { static const GDBusSignalTable obc_transfer_signals[] = { { GDBUS_SIGNAL("PropertyChanged", GDBUS_ARGS({ "name", "s" }, { "value", "v" })) }, + { GDBUS_SIGNAL("Complete", NULL) }, + { GDBUS_SIGNAL("Error", + GDBUS_ARGS({ "code", "s" }, { "message", "s" })) }, { } }; @@ -437,12 +440,25 @@ static void xfer_complete(GObex *obex, GError *err, gpointer user_data) transfer->progress_id = 0; } - if (err) - goto done; - - transfer->size = transfer->transferred; + if (err == NULL) { + transfer->size = transfer->transferred; + + if (transfer->path != NULL) + g_dbus_emit_signal(transfer->conn, transfer->path, + TRANSFER_INTERFACE, "Complete", + DBUS_TYPE_INVALID); + } else if (transfer->path != NULL) { + const char *code = "org.openobex.Error.Failed"; + + g_dbus_emit_signal(transfer->conn, transfer->path, + TRANSFER_INTERFACE, "Error", + DBUS_TYPE_STRING, + &code, + DBUS_TYPE_STRING, + &err->message, + DBUS_TYPE_INVALID); + } -done: if (callback) callback->func(transfer, transfer->size, err, callback->data); } -- 2.47.3