Esempio n. 1
0
int SeafileRpcClient::getCloneTasks(std::vector<CloneTask> *tasks)
{
    GError *error = NULL;
    GList *objlist = searpc_client_call__objlist(
        seafile_rpc_client_,
        "seafile_get_clone_tasks",
        SEAFILE_TYPE_CLONE_TASK,
        &error, 0);

    if (error) {
        g_error_free(error);
        return -1;
    }

    for (GList *ptr = objlist; ptr; ptr = ptr->next) {
        CloneTask task = CloneTask::fromGObject((GObject *)ptr->data);

        if (task.state == "fetch") {
            getTransferDetail(&task);
        } else if (task.state == "checkout") {
            getCheckOutDetail(&task);
        } else if (task.state == "error") {
            if (task.error_str == "fetch") {
                getTransferDetail(&task);
            }
        }
        task.translateStateInfo();
        tasks->push_back(task);
    }

    g_list_foreach (objlist, (GFunc)g_object_unref, NULL);
    g_list_free (objlist);

    return 0;
}
Esempio n. 2
0
CloneTask CloneTask::fromGObject(GObject *obj)
{
    CloneTask task;

    char *state = NULL;
    char *error_str = NULL;
    char *repo_id = NULL;
    char *peer_id = NULL;
    char *repo_name = NULL;
    char *worktree = NULL;
    char *tx_id = NULL;

    g_object_get (obj,
                  "state", &state,
                  "error_str", &error_str,
                  "repo_id", &repo_id,
                  "peer_id", &peer_id,
                  "repo_name", &repo_name,
                  "worktree", &worktree,
                  "tx_id", &tx_id,
                  NULL);

    task.state = QString::fromUtf8(state);
    task.error_str = QString::fromUtf8(error_str);
    task.repo_id = QString::fromUtf8(repo_id);
    task.peer_id = QString::fromUtf8(peer_id);
    task.repo_name = QString::fromUtf8(repo_name);
    task.worktree = QString::fromUtf8(worktree);
    task.tx_id = QString::fromUtf8(tx_id);

    task.block_done = 0;
    task.block_total = 0;

    task.checkout_done = 0;
    task.checkout_total = 0;

    g_free (state);
    g_free (error_str);
    g_free (repo_id);
    g_free (peer_id);
    g_free (repo_name);
    g_free (worktree);
    g_free (tx_id);

    task.translateStateInfo();

    return task;
}