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_prepare_get(struct session_data *session, GError *err, void *data) { struct transfer_data *transfer = data; int ret; ret = transfer_get(transfer, transfer_progress, session); if (ret < 0) { GError *gerr = NULL; g_set_error(&gerr, OBEX_IO_ERROR, ret, "%s", strerror(-ret)); session_notify_error(session, transfer, gerr); g_clear_error(&gerr); return; } DBG("Transfer(%p) started", transfer); }
static void transfer_progress(struct transfer_data *transfer, gint64 transferred, int err, void *user_data) { struct session_data *session = user_data; GError *gerr = NULL; if (err != 0) goto fail; session_notify_progress(session, transfer, transferred); return; fail: g_set_error(&gerr, OBEX_IO_ERROR, err, "%s", err > 0 ? OBEX_ResponseToString(err) : strerror(-err)); session_notify_error(session, transfer, gerr); g_clear_error(&gerr); }