From: Michael Tremer Date: Fri, 23 Apr 2021 08:44:09 +0000 (+0000) Subject: request: Change type from PakfireRequest to struct pakfire_request X-Git-Tag: 0.9.28~1285^2~265 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25141aa0ba9b8d0bced6e85e18e9e20cee29fe58;p=pakfire.git request: Change type from PakfireRequest to struct pakfire_request Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/request.c b/src/_pakfire/request.c index 69fabdb23..1b96e4086 100644 --- a/src/_pakfire/request.c +++ b/src/_pakfire/request.c @@ -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; } diff --git a/src/_pakfire/request.h b/src/_pakfire/request.h index 763975cb6..de16b63a4 100644 --- a/src/_pakfire/request.h +++ b/src/_pakfire/request.h @@ -23,11 +23,11 @@ #include -#include +#include typedef struct { PyObject_HEAD - PakfireRequest request; + struct pakfire_request* request; } RequestObject; extern PyTypeObject RequestType; diff --git a/src/_pakfire/transaction.c b/src/_pakfire/transaction.c index ef7dcd13c..a115e14aa 100644 --- a/src/_pakfire/transaction.c +++ b/src/_pakfire/transaction.c @@ -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) diff --git a/src/libpakfire/include/pakfire/problem.h b/src/libpakfire/include/pakfire/problem.h index d801ee06b..76a692122 100644 --- a/src/libpakfire/include/pakfire/problem.h +++ b/src/libpakfire/include/pakfire/problem.h @@ -21,9 +21,11 @@ #ifndef PAKFIRE_PROBLEM_H #define PAKFIRE_PROBLEM_H +#include + #include -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 - Pakfire pakfire_problem_get_pakfire(PakfireProblem problem); Id pakfire_problem_get_id(PakfireProblem problem); diff --git a/src/libpakfire/include/pakfire/request.h b/src/libpakfire/include/pakfire/request.h index 963043e0b..605a44d40 100644 --- a/src/libpakfire/include/pakfire/request.h +++ b/src/libpakfire/include/pakfire/request.h @@ -21,11 +21,10 @@ #ifndef PAKFIRE_REQUEST_H #define PAKFIRE_REQUEST_H -#include -#include - #include +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 -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 diff --git a/src/libpakfire/include/pakfire/types.h b/src/libpakfire/include/pakfire/types.h index 67f390611..d4ef2f29f 100644 --- a/src/libpakfire/include/pakfire/types.h +++ b/src/libpakfire/include/pakfire/types.h @@ -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; diff --git a/src/libpakfire/problem.c b/src/libpakfire/problem.c index ab435e934..ec58e33a8 100644 --- a/src/libpakfire/problem.c +++ b/src/libpakfire/problem.c @@ -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); } diff --git a/src/libpakfire/request.c b/src/libpakfire/request.c index a86ba61d5..5d7f50002 100644 --- a/src/libpakfire/request.c +++ b/src/libpakfire/request.c @@ -40,52 +40,48 @@ #include #include -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; diff --git a/src/libpakfire/solution.c b/src/libpakfire/solution.c index 2c56009bb..ce21c12de 100644 --- a/src/libpakfire/solution.c +++ b/src/libpakfire/solution.c @@ -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;