]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: Make Pakfire parent object of Transaction
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 15 Jan 2018 20:04:32 +0000 (21:04 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 15 Jan 2018 20:04:32 +0000 (21:04 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/transaction.c
src/libpakfire/include/pakfire/transaction.h
src/libpakfire/request.c
src/libpakfire/transaction.c

index 30effc904c505bf2a7bb686bd95cb1f0502698db..8c325feace62203bdb49b8c84afa01dc3f254a59 100644 (file)
@@ -78,13 +78,9 @@ static int Transaction_init(TransactionObject* self, PyObject* args, PyObject* k
        PakfireRequest req = request->request;
        self->transaction = pakfire_request_get_transaction(req);
 
-       // If request has got no transaction, we will create an (empty) new one.
-       if (!self->transaction) {
-               PakfirePool pool = pakfire_request_get_pool(req);
-
-               self->transaction = pakfire_transaction_create(pool, NULL);
-               pakfire_pool_unref(pool);
-       }
+       // Fail on empty transaction
+       if (!self->transaction)
+               return -1;
 
        return 0;
 }
index 648564dcb823c8e70af189c57cf3f6e8ab80be6a..9fcb3f4616653184b858768ba9ebb5580f2dbe23 100644 (file)
@@ -25,7 +25,7 @@
 
 #include <pakfire/types.h>
 
-PakfireTransaction pakfire_transaction_create(PakfirePool pool, Transaction* trans);
+PakfireTransaction pakfire_transaction_create(Pakfire pakfire, Transaction* trans);
 PakfireTransaction pakfire_transaction_ref(PakfireTransaction transaction);
 PakfireTransaction pakfire_transaction_unref(PakfireTransaction transaction);
 
index c6c3788a289336ea5fadc16596d36045a6e93180..f9dc0313de503cd7c7771af4be461c05e996b9ef 100644 (file)
@@ -217,11 +217,7 @@ PAKFIRE_EXPORT PakfireTransaction pakfire_request_get_transaction(PakfireRequest
        if (!request->transaction)
                return NULL;
 
-       PakfirePool pool = pakfire_get_pool(request->pakfire);
-       PakfireTransaction transaction = pakfire_transaction_create(pool, request->transaction);
-       pakfire_pool_unref(pool);
-
-       return transaction;
+       return pakfire_transaction_create(request->pakfire, request->transaction);
 }
 
 PAKFIRE_EXPORT int pakfire_request_install(PakfireRequest request, PakfirePackage package) {
index 406e1f700c0320223bd5bf16fc1a35aa0e37d5f4..d5de4ee09c3214821221571954be333c2811afe8 100644 (file)
@@ -25,6 +25,7 @@
 #include <pakfire/logging.h>
 #include <pakfire/package.h>
 #include <pakfire/packagelist.h>
+#include <pakfire/pakfire.h>
 #include <pakfire/pool.h>
 #include <pakfire/private.h>
 #include <pakfire/repo.h>
 #include <pakfire/util.h>
 
 struct _PakfireTransaction {
-       PakfirePool pool;
+       Pakfire pakfire;
        Transaction* transaction;
        PakfireStep* steps;
        size_t num_steps;
        int nrefs;
 };
 
-PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_create(PakfirePool pool, Transaction* trans) {
+PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_create(Pakfire pakfire, Transaction* trans) {
        PakfireTransaction transaction = pakfire_calloc(1, sizeof(*transaction));
        if (transaction) {
                DEBUG("Allocated Transaction at %p\n", transaction);
                transaction->nrefs = 1;
 
-               transaction->pool = pakfire_pool_ref(pool);
+               transaction->pakfire = pakfire_ref(pakfire);
 
                // Clone the transaction, so we get independent from what ever called this.
                if (trans) {
@@ -78,7 +79,7 @@ PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_ref(PakfireTransaction tra
 }
 
 void pakfire_transaction_free(PakfireTransaction transaction) {
-       pakfire_pool_unref(transaction->pool);
+       pakfire_unref(transaction->pakfire);
 
        // Release all steps
        while (*transaction->steps)
@@ -102,7 +103,7 @@ PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_unref(PakfireTransaction t
 }
 
 PAKFIRE_EXPORT PakfirePool pakfire_transaction_get_pool(PakfireTransaction transaction) {
-       return pakfire_pool_ref(transaction->pool);
+       return pakfire_get_pool(transaction->pakfire);
 }
 
 Transaction* pakfire_transaction_get_transaction(PakfireTransaction transaction) {