guint obc_session_copy(struct obc_session *session, const char *srcname, const char *destname, session_callback_t func, void *user_data, GError **err) { struct pending_request *p; if (session->obex == NULL) { g_set_error(err, OBEX_IO_ERROR, OBEX_IO_DISCONNECTED, "Session disconnected"); return 0; } if (session->p != NULL) { g_set_error(err, OBEX_IO_ERROR, OBEX_IO_BUSY, "Session busy"); return 0; } p = pending_request_new(session, NULL, func, user_data); p->req_id = g_obex_copy(session->obex, srcname, destname, async_cb, p, err); if (*err != NULL) { pending_request_free(p); return 0; } session->p = p; return p->id; }
static int session_process_copy(struct pending_request *p, GError **err) { struct file_data *req = p->data; p->req_id = g_obex_copy(p->session->obex, req->srcname, req->destname, async_cb, p, err); if (*err != NULL) return (*err)->code; p->session->p = p; return 0; }