]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/machine/machined.h
machined: run clone operation asynchronously in the background
[thirdparty/systemd.git] / src / machine / machined.h
CommitLineData
1ee306e1
LP
1#pragma once
2
3/***
4 This file is part of systemd.
5
6 Copyright 2013 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
22#include <stdbool.h>
1ee306e1 23
c3350683 24#include "sd-bus.h"
07630cea
LP
25#include "sd-event.h"
26
27#include "hashmap.h"
28#include "list.h"
1ee306e1
LP
29
30typedef struct Manager Manager;
31
003dffde 32#include "image-dbus.h"
71d35b6b
TA
33#include "machine-dbus.h"
34#include "machine.h"
56599585 35#include "operation.h"
1ee306e1
LP
36
37struct Manager {
c3350683
LP
38 sd_event *event;
39 sd_bus *bus;
1ee306e1
LP
40
41 Hashmap *machines;
42 Hashmap *machine_units;
d3e84ddb 43 Hashmap *machine_leaders;
1ee306e1 44
d04c1fb8
LP
45 Hashmap *polkit_registry;
46
1ddb263d
LP
47 Hashmap *image_cache;
48 sd_event_source *image_cache_defer_event;
49
1ee306e1 50 LIST_HEAD(Machine, machine_gc_queue);
fbe55073
LP
51
52 Machine *host_machine;
56599585
LP
53
54 LIST_HEAD(Operation, operations);
55 unsigned n_operations;
1ee306e1
LP
56};
57
1ee306e1
LP
58Manager *manager_new(void);
59void manager_free(Manager *m);
60
61int manager_add_machine(Manager *m, const char *name, Machine **_machine);
1ee306e1
LP
62int manager_enumerate_machines(Manager *m);
63
64int manager_startup(Manager *m);
65int manager_run(Manager *m);
66
67void manager_gc(Manager *m, bool drop_not_started);
68
69int manager_get_machine_by_pid(Manager *m, pid_t pid, Machine **machine);
70
c3350683
LP
71extern const sd_bus_vtable manager_vtable[];
72
19070062
LP
73int match_reloading(sd_bus_message *message, void *userdata, sd_bus_error *error);
74int match_unit_removed(sd_bus_message *message, void *userdata, sd_bus_error *error);
75int match_properties_changed(sd_bus_message *message, void *userdata, sd_bus_error *error);
76int match_job_removed(sd_bus_message *message, void *userdata, sd_bus_error *error);
1ee306e1 77
c3350683
LP
78int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, sd_bus_message *more_properties, sd_bus_error *error, char **job);
79int manager_stop_unit(Manager *manager, const char *unit, sd_bus_error *error, char **job);
de58a50e 80int manager_kill_unit(Manager *manager, const char *unit, int signo, sd_bus_error *error);
1ee306e1 81int manager_unit_is_active(Manager *manager, const char *unit);
c3350683 82int manager_job_is_active(Manager *manager, const char *path);