]>
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 { |
48cb073d MY |
24 | TRANSACTION_MATTERS = 1 << 0, |
25 | TRANSACTION_CONFLICTS = 1 << 1, | |
26 | TRANSACTION_IGNORE_REQUIREMENTS = 1 << 2, | |
27 | TRANSACTION_IGNORE_ORDER = 1 << 3, | |
09d04ad3 LP |
28 | |
29 | /* Propagate a START job to other units like a RESTART */ | |
48cb073d MY |
30 | TRANSACTION_PROPAGATE_START_AS_RESTART = 1 << 4, |
31 | ||
32 | /* Indicate that we're in the recursion for processing UNIT_ATOM_PROPAGATE_STOP_GRACEFUL units */ | |
33 | TRANSACTION_PROCESS_PROPAGATE_STOP_GRACEFUL = 1 << 5, | |
b0904249 LP |
34 | } TransactionAddFlags; |
35 | ||
36 | void transaction_add_propagate_reload_jobs( | |
37 | Transaction *tr, | |
38 | Unit *unit, Job *by, | |
3044510d | 39 | TransactionAddFlags flags); |
b0904249 | 40 | |
75778e21 MS |
41 | int transaction_add_job_and_dependencies( |
42 | Transaction *tr, | |
43 | JobType type, | |
44 | Unit *unit, | |
45 | Job *by, | |
b0904249 | 46 | TransactionAddFlags flags, |
718db961 | 47 | sd_bus_error *e); |
b0904249 | 48 | |
50cbaba4 | 49 | int transaction_activate(Transaction *tr, Manager *m, JobMode mode, Set *affected, sd_bus_error *e); |
75778e21 | 50 | int transaction_add_isolate_jobs(Transaction *tr, Manager *m); |
1f0f9f21 | 51 | int transaction_add_triggering_jobs(Transaction *tr, Unit *u); |