static void transfer_complete(struct obc_transfer *transfer, GError *err, void *user_data) { struct obc_session *session = user_data; if (err != 0) goto fail; session_notify_complete(session, transfer); return; fail: session_notify_error(session, transfer, err); }
static void session_notify_progress(struct session_data *session, struct transfer_data *transfer, gint64 transferred) { struct agent_data *agent = session->agent; DBusMessage *message; /* For GetFile reply on the first received stream */ if (transfer->fd > 0 && session->msg) { DBusMessage *reply; reply = dbus_message_new_method_return(session->msg); g_dbus_send_message(session->conn, reply); dbus_message_unref(session->msg); session->msg = NULL; } if (agent == NULL || transfer->path == NULL) goto done; message = dbus_message_new_method_call(agent->name, agent->path, AGENT_INTERFACE, "Progress"); if (message == NULL) goto done; dbus_message_set_no_reply(message, TRUE); dbus_message_append_args(message, DBUS_TYPE_OBJECT_PATH, &transfer->path, DBUS_TYPE_UINT64, &transferred, DBUS_TYPE_INVALID); g_dbus_send_message(session->conn, message); done: DBG("Transfer(%p) progress: %ld bytes", transfer, (long int ) transferred); if (transferred == transfer->size) session_notify_complete(session, transfer); }
static void session_notify_progress(struct obc_session *session, struct obc_transfer *transfer, gint64 transferred) { struct obc_agent *agent = session->agent; const char *path; path = obc_transfer_get_path(transfer); if (agent == NULL || path == NULL) goto done; obc_agent_notify_progress(agent, path, transferred); done: DBG("Transfer(%p) progress: %ld bytes", transfer, (long int ) transferred); if (transferred == obc_transfer_get_size(transfer)) session_notify_complete(session, transfer); }