]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
05d3a176 | 2 | #pragma once |
75778e21 MS |
3 | |
4 | typedef struct Transaction Transaction; | |
5 | ||
75778e21 | 6 | #include "hashmap.h" |
71d35b6b TA |
7 | #include "job.h" |
8 | #include "manager.h" | |
9 | #include "unit.h" | |
75778e21 MS |
10 | |
11 | struct Transaction { | |
12 | /* Jobs to be added */ | |
13 | Hashmap *jobs; /* Unit object => Job object list 1:1 */ | |
b94fbd30 | 14 | Job *anchor_job; /* the job the user asked for */ |
23ade460 | 15 | bool irreversible; |
75778e21 MS |
16 | }; |
17 | ||
23ade460 | 18 | Transaction *transaction_new(bool irreversible); |
12da8805 | 19 | Transaction *transaction_free(Transaction *tr); |
542fe408 DT |
20 | Transaction *transaction_abort_and_free(Transaction *tr); |
21 | DEFINE_TRIVIAL_CLEANUP_FUNC(Transaction*, transaction_abort_and_free); | |
75778e21 | 22 | |
b0904249 | 23 | typedef enum TransactionAddFlags { |
09d04ad3 LP |
24 | TRANSACTION_MATTERS = 1 << 0, |
25 | TRANSACTION_CONFLICTS = 1 << 1, | |
26 | TRANSACTION_IGNORE_REQUIREMENTS = 1 << 2, | |
27 | TRANSACTION_IGNORE_ORDER = 1 << 3, | |
28 | ||
29 | /* Propagate a START job to other units like a RESTART */ | |
30 | TRANSACTION_PROPAGATE_START_AS_RESTART = 1 << 4, | |
b0904249 LP |
31 | } TransactionAddFlags; |
32 | ||
33 | void transaction_add_propagate_reload_jobs( | |
34 | Transaction *tr, | |
35 | Unit *unit, Job *by, | |
3044510d | 36 | TransactionAddFlags flags); |
b0904249 | 37 | |
75778e21 MS |
38 | int transaction_add_job_and_dependencies( |
39 | Transaction *tr, | |
40 | JobType type, | |
41 | Unit *unit, | |
42 | Job *by, | |
b0904249 | 43 | TransactionAddFlags flags, |
718db961 | 44 | sd_bus_error *e); |
b0904249 | 45 | |
50cbaba4 | 46 | int transaction_activate(Transaction *tr, Manager *m, JobMode mode, Set *affected, sd_bus_error *e); |
75778e21 | 47 | int transaction_add_isolate_jobs(Transaction *tr, Manager *m); |
1f0f9f21 | 48 | int transaction_add_triggering_jobs(Transaction *tr, Unit *u); |