]> git.ipfire.org Git - pakfire.git/commitdiff
request: Change type from PakfireRequest to struct pakfire_request
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 23 Apr 2021 08:44:09 +0000 (08:44 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 23 Apr 2021 08:44:09 +0000 (08:44 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/request.c
src/_pakfire/request.h
src/_pakfire/transaction.c
src/libpakfire/include/pakfire/problem.h
src/libpakfire/include/pakfire/request.h
src/libpakfire/include/pakfire/types.h
src/libpakfire/problem.c
src/libpakfire/request.c
src/libpakfire/solution.c

index 69fabdb233e5ab24cbe784eb7fa053d7e5a7cc20..1b96e40861e45aa5139e293a0b9827c8403a06d8 100644 (file)
@@ -52,9 +52,11 @@ static int Request_init(RequestObject* self, PyObject* args, PyObject* kwds) {
        if (!PyArg_ParseTuple(args, "O!", &PakfireType, &pakfire))
                return -1;
 
-       self->request = pakfire_request_create(pakfire->pakfire);
-       if (!self->request)
+       int r = pakfire_request_create(&self->request, pakfire->pakfire);
+       if (r) {
+               PyErr_SetFromErrno(PyExc_OSError);
                return -1;
+       }
 
        return 0;
 }
index 763975cb67929330877ae14fb562aaae1b4ad16a..de16b63a41d746dd27e27eba8ba86972ee8f5724 100644 (file)
 
 #include <Python.h>
 
-#include <pakfire/types.h>
+#include <pakfire/request.h>
 
 typedef struct {
        PyObject_HEAD
-       PakfireRequest request;
+       struct pakfire_request* request;
 } RequestObject;
 
 extern PyTypeObject RequestType;
index ef7dcd13cead93dc4ee1d027da5f204de786c6a1..a115e14aa183435b680d4717203b0978562f1086 100644 (file)
@@ -75,8 +75,7 @@ static int Transaction_init(TransactionObject* self, PyObject* args, PyObject* k
        self->request = request;
        Py_INCREF(self->request);
 
-       PakfireRequest req = request->request;
-       self->transaction = pakfire_request_get_transaction(req);
+       self->transaction = pakfire_request_get_transaction(request->request);
 
        // Fail on empty transaction
        if (!self->transaction)
index d801ee06b35b2d154a9827cfeca2fc8411cc0dd1..76a692122bc6b3eaee2d56309db26dc8a7c8518f 100644 (file)
 #ifndef PAKFIRE_PROBLEM_H
 #define PAKFIRE_PROBLEM_H
 
+#include <solv/pooltypes.h>
+
 #include <pakfire/request.h>
 
-PakfireProblem pakfire_problem_create(PakfireRequest request, Id id);
+PakfireProblem pakfire_problem_create(struct pakfire_request* request, Id id);
 PakfireProblem pakfire_problem_ref(PakfireProblem problem);
 PakfireProblem pakfire_problem_unref(PakfireProblem problem);
 
@@ -32,13 +34,11 @@ void pakfire_problem_append(PakfireProblem problem, PakfireProblem new_problem);
 
 const char* pakfire_problem_to_string(PakfireProblem problem);
 
-PakfireRequest pakfire_problem_get_request(PakfireProblem problem);
+struct pakfire_request* pakfire_problem_get_request(PakfireProblem problem);
 PakfireSolution pakfire_problem_get_solutions(PakfireProblem problem);
 
 #ifdef PAKFIRE_PRIVATE
 
-#include <solv/pooltypes.h>
-
 Pakfire pakfire_problem_get_pakfire(PakfireProblem problem);
 Id pakfire_problem_get_id(PakfireProblem problem);
 
index 963043e0b3f275e00829700cce87a56bd7ba297a..605a44d40536db5e870a5643f6367e27cc045e4b 100644 (file)
 #ifndef PAKFIRE_REQUEST_H
 #define PAKFIRE_REQUEST_H
 
-#include <solv/queue.h>
-#include <solv/transaction.h>
-
 #include <pakfire/types.h>
 
+struct pakfire_request;
+
 enum _pakfire_request_op_flags {
        PAKFIRE_CHECK_INSTALLED = 1 << 0,
        PAKFIRE_CLEAN_DEPS      = 1 << 1,
@@ -40,42 +39,42 @@ enum _pakfire_solver_flags {
        PAKFIRE_SOLVER_ALLOW_VENDORCHANGE = 1 << 5,
 };
 
-PakfireRequest pakfire_request_create(Pakfire pakfire);
+int pakfire_request_create(struct pakfire_request** request, Pakfire pakfire);
 
-PakfireRequest pakfire_request_ref(PakfireRequest request);
-PakfireRequest pakfire_request_unref(PakfireRequest request);
+struct pakfire_request* pakfire_request_ref(struct pakfire_request* request);
+struct pakfire_request* pakfire_request_unref(struct pakfire_request* request);
 
-int pakfire_request_solve(PakfireRequest request, int flags);
-PakfireProblem pakfire_request_get_problems(PakfireRequest request);
-PakfireTransaction pakfire_request_get_transaction(PakfireRequest request);
+int pakfire_request_solve(struct pakfire_request* request, int flags);
+PakfireProblem pakfire_request_get_problems(struct pakfire_request* request);
+PakfireTransaction pakfire_request_get_transaction(struct pakfire_request* request);
 
-int pakfire_request_install(PakfireRequest request, PakfirePackage package);
-int pakfire_request_install_relation(PakfireRequest request, PakfireRelation relation);
-int pakfire_request_install_selector(PakfireRequest request, PakfireSelector selector);
+int pakfire_request_install(struct pakfire_request* request, PakfirePackage package);
+int pakfire_request_install_relation(struct pakfire_request* request, PakfireRelation relation);
+int pakfire_request_install_selector(struct pakfire_request* request, PakfireSelector selector);
 
-int pakfire_request_erase(PakfireRequest request, PakfirePackage package, int flags);
-int pakfire_request_erase_relation(PakfireRequest request, PakfireRelation relation, int flags);
-int pakfire_request_erase_selector(PakfireRequest request, PakfireSelector selector, int flags);
+int pakfire_request_erase(struct pakfire_request* request, PakfirePackage package, int flags);
+int pakfire_request_erase_relation(struct pakfire_request* request, PakfireRelation relation, int flags);
+int pakfire_request_erase_selector(struct pakfire_request* request, PakfireSelector selector, int flags);
 
-int pakfire_request_upgrade(PakfireRequest request, PakfirePackage package);
-int pakfire_request_upgrade_relation(PakfireRequest request, PakfireRelation relation);
-int pakfire_request_upgrade_selector(PakfireRequest request, PakfireSelector selector);
+int pakfire_request_upgrade(struct pakfire_request* request, PakfirePackage package);
+int pakfire_request_upgrade_relation(struct pakfire_request* request, PakfireRelation relation);
+int pakfire_request_upgrade_selector(struct pakfire_request* request, PakfireSelector selector);
 
-int pakfire_request_upgrade_all(PakfireRequest request);
-int pakfire_request_distupgrade(PakfireRequest request);
+int pakfire_request_upgrade_all(struct pakfire_request* request);
+int pakfire_request_distupgrade(struct pakfire_request* request);
 
-int pakfire_request_lock(PakfireRequest request, PakfirePackage package);
-int pakfire_request_lock_relation(PakfireRequest request, PakfireRelation relation);
-int pakfire_request_lock_selector(PakfireRequest request, PakfireSelector selector);
+int pakfire_request_lock(struct pakfire_request* request, PakfirePackage package);
+int pakfire_request_lock_relation(struct pakfire_request* request, PakfireRelation relation);
+int pakfire_request_lock_selector(struct pakfire_request* request, PakfireSelector selector);
 
-int pakfire_request_verify(PakfireRequest request);
+int pakfire_request_verify(struct pakfire_request* request);
 
 #ifdef PAKFIRE_PRIVATE
 
 #include <solv/solver.h>
 
-Pakfire pakfire_request_get_pakfire(PakfireRequest request);
-Solver* pakfire_request_get_solver(PakfireRequest request);
+Pakfire pakfire_request_get_pakfire(struct pakfire_request* request);
+Solver* pakfire_request_get_solver(struct pakfire_request* request);
 
 #endif
 
index 67f390611a2db40abcafe0652991886cbec1a67d..d4ef2f29f6992c16f3649c00f5ad4ffd44166e96 100644 (file)
@@ -37,7 +37,6 @@ typedef struct _PakfireProblem* PakfireProblem;
 typedef struct _PakfireRelation* PakfireRelation;
 typedef struct _PakfireRelationList* PakfireRelationList;
 typedef struct _PakfireRepo* PakfireRepo;
-typedef struct _PakfireRequest* PakfireRequest;
 typedef struct _PakfireSelector* PakfireSelector;
 typedef struct _PakfireSolution* PakfireSolution;
 typedef struct _PakfireStep* PakfireStep;
index ab435e9343689e4854af4ffbdd79564ed7c78f3e..ec58e33a8b62332b400f77b042d0d8b5951a5291 100644 (file)
@@ -32,7 +32,7 @@
 
 struct _PakfireProblem {
        Pakfire pakfire;
-       PakfireRequest request;
+       struct pakfire_request* request;
        Id id;
        char* string;
 
@@ -204,7 +204,7 @@ static char* to_string(PakfireProblem problem) {
        return strdup(s);
 }
 
-PAKFIRE_EXPORT PakfireProblem pakfire_problem_create(PakfireRequest request, Id id) {
+PAKFIRE_EXPORT PakfireProblem pakfire_problem_create(struct pakfire_request* request, Id id) {
        Pakfire pakfire = pakfire_request_get_pakfire(request);
 
        PakfireProblem problem = calloc(1, sizeof(*problem));
@@ -282,7 +282,7 @@ Id pakfire_problem_get_id(PakfireProblem problem) {
        return problem->id;
 }
 
-PAKFIRE_EXPORT PakfireRequest pakfire_problem_get_request(PakfireProblem problem) {
+PAKFIRE_EXPORT struct pakfire_request* pakfire_problem_get_request(PakfireProblem problem) {
        return pakfire_request_ref(problem->request);
 }
 
index a86ba61d58684c32f510fb003ea4bbc384f360be..5d7f500020df85d0cfd76d457720bbac8755a818 100644 (file)
 #include <pakfire/types.h>
 #include <pakfire/util.h>
 
-struct _PakfireRequest {
+struct pakfire_request {
        Pakfire pakfire;
-       Queue queue;
+       int nrefs;
+
        Solver* solver;
        Transaction* transaction;
-       int nrefs;
-};
 
-PAKFIRE_EXPORT PakfireRequest pakfire_request_create(Pakfire pakfire) {
-       PakfireRequest request = calloc(1, sizeof(*request));
-       if (request) {
-               DEBUG(pakfire, "Allocated Request at %p\n", request);
-               request->nrefs = 1;
+       Queue queue;
+};
 
-               request->pakfire = pakfire_ref(pakfire);
-               queue_init(&request->queue);
-       }
+PAKFIRE_EXPORT int pakfire_request_create(struct pakfire_request** request, Pakfire pakfire) {
+       struct pakfire_request* req = calloc(1, sizeof(*req));
+       if (!req)
+               return ENOMEM;
 
-       return request;
-}
+       req->pakfire = pakfire_ref(pakfire);
+       req->nrefs = 1;
 
-PAKFIRE_EXPORT PakfireRequest pakfire_request_ref(PakfireRequest request) {
-       request->nrefs++;
+       queue_init(&req->queue);
 
-       return request;
+       *request = req;
+       return 0;
 }
 
-static void pakfire_request_free(PakfireRequest request) {
-       DEBUG(request->pakfire, "Releasing Request at %p\n", request);
-
+static void pakfire_request_free(struct pakfire_request* request) {
        if (request->transaction)
                transaction_free(request->transaction);
-
        if (request->solver)
                solver_free(request->solver);
-
        queue_free(&request->queue);
 
        pakfire_unref(request->pakfire);
        free(request);
 }
 
-PAKFIRE_EXPORT PakfireRequest pakfire_request_unref(PakfireRequest request) {
-       if (!request)
-               return NULL;
+PAKFIRE_EXPORT struct pakfire_request* pakfire_request_ref(struct pakfire_request* request) {
+       request->nrefs++;
+
+       return request;
+}
 
+PAKFIRE_EXPORT struct pakfire_request* pakfire_request_unref(struct pakfire_request* request) {
        if (--request->nrefs > 0)
                return request;
 
@@ -93,15 +89,15 @@ PAKFIRE_EXPORT PakfireRequest pakfire_request_unref(PakfireRequest request) {
        return NULL;
 }
 
-Pakfire pakfire_request_get_pakfire(PakfireRequest request) {
+Pakfire pakfire_request_get_pakfire(struct pakfire_request* request) {
        return pakfire_ref(request->pakfire);
 }
 
-Solver* pakfire_request_get_solver(PakfireRequest request) {
+Solver* pakfire_request_get_solver(struct pakfire_request* request) {
        return request->solver;
 }
 
-static int init_solver(PakfireRequest request, int flags) {
+static int init_solver(struct pakfire_request* request, int flags) {
        Pool* p = pakfire_get_solv_pool(request->pakfire);
 
        if (!p->installed)
@@ -138,7 +134,7 @@ static int init_solver(PakfireRequest request, int flags) {
        return 0;
 }
 
-static int solve(PakfireRequest request, Queue* queue) {
+static int solve(struct pakfire_request* request, Queue* queue) {
        /* Remove any previous transactions */
        if (request->transaction) {
                transaction_free(request->transaction);
@@ -172,7 +168,7 @@ static int solve(PakfireRequest request, Queue* queue) {
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_request_solve(PakfireRequest request, int flags) {
+PAKFIRE_EXPORT int pakfire_request_solve(struct pakfire_request* request, int flags) {
        int r = init_solver(request, flags);
        if (r) {
                ERROR(request->pakfire, "Could not initialize the solver: %s\n", strerror(errno));
@@ -204,7 +200,7 @@ PAKFIRE_EXPORT int pakfire_request_solve(PakfireRequest request, int flags) {
        return r;
 }
 
-PAKFIRE_EXPORT PakfireProblem pakfire_request_get_problems(PakfireRequest request) {
+PAKFIRE_EXPORT PakfireProblem pakfire_request_get_problems(struct pakfire_request* request) {
        Id problem = 0;
        PakfireProblem ret = NULL;
 
@@ -220,24 +216,24 @@ PAKFIRE_EXPORT PakfireProblem pakfire_request_get_problems(PakfireRequest reques
        return ret;
 }
 
-PAKFIRE_EXPORT PakfireTransaction pakfire_request_get_transaction(PakfireRequest request) {
+PAKFIRE_EXPORT PakfireTransaction pakfire_request_get_transaction(struct pakfire_request* request) {
        if (!request->transaction)
                return NULL;
 
        return pakfire_transaction_create(request->pakfire, request->transaction);
 }
 
-PAKFIRE_EXPORT int pakfire_request_install(PakfireRequest request, PakfirePackage package) {
+PAKFIRE_EXPORT int pakfire_request_install(struct pakfire_request* request, PakfirePackage package) {
        queue_push2(&request->queue, SOLVER_SOLVABLE|SOLVER_INSTALL, pakfire_package_id(package));
 
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_request_install_relation(PakfireRequest request, PakfireRelation relation) {
+PAKFIRE_EXPORT int pakfire_request_install_relation(struct pakfire_request* request, PakfireRelation relation) {
        return pakfire_relation2queue(relation, &request->queue, SOLVER_INSTALL);
 }
 
-PAKFIRE_EXPORT int pakfire_request_install_selector(PakfireRequest request, PakfireSelector selector) {
+PAKFIRE_EXPORT int pakfire_request_install_selector(struct pakfire_request* request, PakfireSelector selector) {
        return pakfire_selector2queue(selector, &request->queue, SOLVER_INSTALL);
 }
 
@@ -250,64 +246,64 @@ static int erase_flags(int flags) {
        return additional;
 }
 
-PAKFIRE_EXPORT int pakfire_request_erase(PakfireRequest request, PakfirePackage package, int flags) {
+PAKFIRE_EXPORT int pakfire_request_erase(struct pakfire_request* request, PakfirePackage package, int flags) {
        int additional = erase_flags(flags);
        queue_push2(&request->queue, SOLVER_SOLVABLE|SOLVER_ERASE|additional, pakfire_package_id(package));
 
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_request_erase_relation(PakfireRequest request, PakfireRelation relation, int flags) {
+PAKFIRE_EXPORT int pakfire_request_erase_relation(struct pakfire_request* request, PakfireRelation relation, int flags) {
        int additional = erase_flags(flags);
 
        return pakfire_relation2queue(relation, &request->queue, SOLVER_ERASE|additional);
 }
 
-PAKFIRE_EXPORT int pakfire_request_erase_selector(PakfireRequest request, PakfireSelector selector, int flags) {
+PAKFIRE_EXPORT int pakfire_request_erase_selector(struct pakfire_request* request, PakfireSelector selector, int flags) {
        int additional = erase_flags(flags);
 
        return pakfire_selector2queue(selector, &request->queue, SOLVER_ERASE|additional);
 }
 
-PAKFIRE_EXPORT int pakfire_request_upgrade(PakfireRequest request, PakfirePackage package) {
+PAKFIRE_EXPORT int pakfire_request_upgrade(struct pakfire_request* request, PakfirePackage package) {
        return pakfire_request_install(request, package);
 }
 
-PAKFIRE_EXPORT int pakfire_request_upgrade_relation(PakfireRequest request, PakfireRelation relation) {
+PAKFIRE_EXPORT int pakfire_request_upgrade_relation(struct pakfire_request* request, PakfireRelation relation) {
        return pakfire_relation2queue(relation, &request->queue, SOLVER_UPDATE);
 }
 
-PAKFIRE_EXPORT int pakfire_request_upgrade_selector(PakfireRequest request, PakfireSelector selector) {
+PAKFIRE_EXPORT int pakfire_request_upgrade_selector(struct pakfire_request* request, PakfireSelector selector) {
        return pakfire_selector2queue(selector, &request->queue, SOLVER_UPDATE);
 }
 
-PAKFIRE_EXPORT int pakfire_request_upgrade_all(PakfireRequest request) {
+PAKFIRE_EXPORT int pakfire_request_upgrade_all(struct pakfire_request* request) {
        queue_push2(&request->queue, SOLVER_UPDATE|SOLVER_SOLVABLE_ALL, 0);
 
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_request_distupgrade(PakfireRequest request) {
+PAKFIRE_EXPORT int pakfire_request_distupgrade(struct pakfire_request* request) {
        queue_push2(&request->queue, SOLVER_DISTUPGRADE|SOLVER_SOLVABLE_ALL, 0);
 
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_request_lock(PakfireRequest request, PakfirePackage package) {
+PAKFIRE_EXPORT int pakfire_request_lock(struct pakfire_request* request, PakfirePackage package) {
        queue_push2(&request->queue, SOLVER_SOLVABLE|SOLVER_LOCK, pakfire_package_id(package));
 
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_request_lock_relation(PakfireRequest request, PakfireRelation relation) {
+PAKFIRE_EXPORT int pakfire_request_lock_relation(struct pakfire_request* request, PakfireRelation relation) {
        return pakfire_relation2queue(relation, &request->queue, SOLVER_LOCK);
 }
 
-PAKFIRE_EXPORT int pakfire_request_lock_selector(PakfireRequest request, PakfireSelector selector) {
+PAKFIRE_EXPORT int pakfire_request_lock_selector(struct pakfire_request* request, PakfireSelector selector) {
        return pakfire_selector2queue(selector, &request->queue, SOLVER_LOCK);
 }
 
-PAKFIRE_EXPORT int pakfire_request_verify(PakfireRequest request) {
+PAKFIRE_EXPORT int pakfire_request_verify(struct pakfire_request* request) {
        queue_push2(&request->queue, SOLVER_VERIFY|SOLVER_SOLVABLE_ALL, 0);
 
        return 0;
index 2c56009bbdb79eaefff2365054b8fbaaa29084f7..ce21c12dec0a9cda0066328c5f194993560aa0e7 100644 (file)
@@ -42,7 +42,7 @@ struct _PakfireSolution {
 };
 
 static void import_elements(PakfireSolution solution) {
-       PakfireRequest request = pakfire_problem_get_request(solution->problem);
+       struct pakfire_request* request = pakfire_problem_get_request(solution->problem);
 
        Solver* solver = pakfire_request_get_solver(request);
        Pool* pool = solver->pool;