dbus-unit.h revision 2528a7a62c4ad9b2f4773b608d208239299da50c
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead#ifndef foodbusunithfoo
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead#define foodbusunithfoo
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead/***
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead This file is part of systemd.
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead Copyright 2010 Lennart Poettering
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead systemd is free software; you can redistribute it and/or modify it
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead under the terms of the GNU General Public License as published by
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead the Free Software Foundation; either version 2 of the License, or
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead (at your option) any later version.
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead systemd is distributed in the hope that it will be useful, but
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead WITHOUT ANY WARRANTY; without even the implied warranty of
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead General Public License for more details.
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead You should have received a copy of the GNU General Public License
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead along with systemd; If not, see <http://www.gnu.org/licenses/>.
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead***/
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead#include <dbus/dbus.h>
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
d7ee26eb1f58e81a7b99a678461ca0df4b225ad8Lubos Kosco#include "manager.h"
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead#define BUS_UNIT_INTERFACE \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <interface name=\"org.freedesktop.systemd1.Unit\">\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <method name=\"Start\">\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
d7ee26eb1f58e81a7b99a678461ca0df4b225ad8Lubos Kosco " </method>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <method name=\"Stop\">\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " </method>\n" \
d7ee26eb1f58e81a7b99a678461ca0df4b225ad8Lubos Kosco " <method name=\"Reload\">\n" \
d7ee26eb1f58e81a7b99a678461ca0df4b225ad8Lubos Kosco " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " </method>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <method name=\"Restart\">\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " </method>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <method name=\"TryRestart\">\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " </method>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <method name=\"ReloadOrRestart\">\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " </method>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <method name=\"ReloadOrTryRestart\">\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " </method>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <method name=\"ResetMaintenance\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"Id\" type=\"s\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"Names\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"Following\" type=\"s\" access=\"read\"/>\n" \
d7ee26eb1f58e81a7b99a678461ca0df4b225ad8Lubos Kosco " <property name=\"Requires\" type=\"as\" access=\"read\"/>\n" \
d7ee26eb1f58e81a7b99a678461ca0df4b225ad8Lubos Kosco " <property name=\"RequiresOverridable\" type=\"as\" access=\"read\"/>\n" \
d7ee26eb1f58e81a7b99a678461ca0df4b225ad8Lubos Kosco " <property name=\"Requisite\" type=\"as\" access=\"read\"/>\n" \
d7ee26eb1f58e81a7b99a678461ca0df4b225ad8Lubos Kosco " <property name=\"RequisiteOverridable\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"Wants\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"RequiredBy\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"RequiredByOverridable\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"WantedBy\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"Conflicts\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"ConflictedBy\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"Before\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"After\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"OnFailure\" type=\"as\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"Description\" type=\"s\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"LoadState\" type=\"s\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"ActiveState\" type=\"s\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"SubState\" type=\"s\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"FragmentPath\" type=\"s\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"InactiveExitTimestamp\" type=\"t\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"ActiveEnterTimestamp\" type=\"t\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"ActiveExitTimestamp\" type=\"t\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"InactiveEnterTimestamp\" type=\"t\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"CanReload\" type=\"b\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"CanStart\" type=\"b\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"CanStop\" type=\"b\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"CanIsolate\" type=\"b\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"Job\" type=\"(uo)\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"RecursiveStop\" type=\"b\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"StopWhenUneeded\" type=\"b\" access=\"read\"/>\n" \
900f57f08857f08b0f9d0edcace811aed617ad7bScott Halstead " <property name=\"RefuseManualStart\" type=\"b\" access=\"read\"/>\n" \
" <property name=\"RefuseManualStop\" type=\"b\" access=\"read\"/>\n" \
" <property name=\"DefaultDependencies\" type=\"b\" access=\"read\"/>\n" \
" <property name=\"DefaultControlGroup\" type=\"s\" access=\"read\"/>\n" \
" <property name=\"ControlGroups\" type=\"as\" access=\"read\"/>\n" \
" <property name=\"NeedDaemonReload\" type=\"b\" access=\"read\"/>\n" \
" <property name=\"JobTimeoutUSec\" type=\"t\" access=\"read\"/>\n" \
" </interface>\n"
#define BUS_UNIT_PROPERTIES \
{ "org.freedesktop.systemd1.Unit", "Id", bus_property_append_string, "s", u->meta.id }, \
{ "org.freedesktop.systemd1.Unit", "Names", bus_unit_append_names, "as", u }, \
{ "org.freedesktop.systemd1.Unit", "Following", bus_unit_append_following, "s", u }, \
{ "org.freedesktop.systemd1.Unit", "Requires", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_REQUIRES] }, \
{ "org.freedesktop.systemd1.Unit", "RequiresOverridable", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_REQUIRES_OVERRIDABLE] }, \
{ "org.freedesktop.systemd1.Unit", "Requisite", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_REQUISITE] }, \
{ "org.freedesktop.systemd1.Unit", "RequisiteOverridable", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_REQUISITE_OVERRIDABLE] }, \
{ "org.freedesktop.systemd1.Unit", "Wants", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_WANTS] }, \
{ "org.freedesktop.systemd1.Unit", "RequiredBy", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_REQUIRED_BY] }, \
{ "org.freedesktop.systemd1.Unit", "RequiredByOverridable",bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_REQUIRED_BY_OVERRIDABLE] }, \
{ "org.freedesktop.systemd1.Unit", "WantedBy", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_WANTED_BY] }, \
{ "org.freedesktop.systemd1.Unit", "Conflicts", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_CONFLICTS] }, \
{ "org.freedesktop.systemd1.Unit", "ConflictedBy", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_CONFLICTED_BY] }, \
{ "org.freedesktop.systemd1.Unit", "Before", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_BEFORE] }, \
{ "org.freedesktop.systemd1.Unit", "After", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_AFTER] }, \
{ "org.freedesktop.systemd1.Unit", "OnFailure", bus_unit_append_dependencies, "as", u->meta.dependencies[UNIT_ON_FAILURE] }, \
{ "org.freedesktop.systemd1.Unit", "Description", bus_unit_append_description, "s", u }, \
{ "org.freedesktop.systemd1.Unit", "LoadState", bus_unit_append_load_state, "s", &u->meta.load_state }, \
{ "org.freedesktop.systemd1.Unit", "ActiveState", bus_unit_append_active_state, "s", u }, \
{ "org.freedesktop.systemd1.Unit", "SubState", bus_unit_append_sub_state, "s", u }, \
{ "org.freedesktop.systemd1.Unit", "FragmentPath", bus_property_append_string, "s", u->meta.fragment_path }, \
{ "org.freedesktop.systemd1.Unit", "InactiveExitTimestamp",bus_property_append_uint64, "t", &u->meta.inactive_exit_timestamp.realtime }, \
{ "org.freedesktop.systemd1.Unit", "ActiveEnterTimestamp", bus_property_append_uint64, "t", &u->meta.active_enter_timestamp.realtime }, \
{ "org.freedesktop.systemd1.Unit", "ActiveExitTimestamp", bus_property_append_uint64, "t", &u->meta.active_exit_timestamp.realtime }, \
{ "org.freedesktop.systemd1.Unit", "InactiveEnterTimestamp",bus_property_append_uint64, "t", &u->meta.inactive_enter_timestamp.realtime }, \
{ "org.freedesktop.systemd1.Unit", "CanStart", bus_unit_append_can_start, "b", u }, \
{ "org.freedesktop.systemd1.Unit", "CanStop", bus_unit_append_can_stop, "b", u }, \
{ "org.freedesktop.systemd1.Unit", "CanReload", bus_unit_append_can_reload, "b", u }, \
{ "org.freedesktop.systemd1.Unit", "CanIsolate", bus_unit_append_can_isolate, "b", u }, \
{ "org.freedesktop.systemd1.Unit", "Job", bus_unit_append_job, "(uo)", u }, \
{ "org.freedesktop.systemd1.Unit", "RecursiveStop", bus_property_append_bool, "b", &u->meta.recursive_stop }, \
{ "org.freedesktop.systemd1.Unit", "StopWhenUneeded", bus_property_append_bool, "b", &u->meta.stop_when_unneeded }, \
{ "org.freedesktop.systemd1.Unit", "RefuseManualStart", bus_property_append_bool, "b", &u->meta.refuse_manual_start }, \
{ "org.freedesktop.systemd1.Unit", "RefuseManualStop", bus_property_append_bool, "b", &u->meta.refuse_manual_stop }, \
{ "org.freedesktop.systemd1.Unit", "AllowIsolate", bus_property_append_bool, "b", &u->meta.allow_isolate }, \
{ "org.freedesktop.systemd1.Unit", "DefaultDependencies", bus_property_append_bool, "b", &u->meta.default_dependencies }, \
{ "org.freedesktop.systemd1.Unit", "DefaultControlGroup", bus_unit_append_default_cgroup, "s", u }, \
{ "org.freedesktop.systemd1.Unit", "ControlGroups", bus_unit_append_cgroups, "as", u }, \
{ "org.freedesktop.systemd1.Unit", "NeedDaemonReload", bus_unit_append_need_daemon_reload, "b", u }, \
{ "org.freedesktop.systemd1.Unit", "JobTimeoutUSec", bus_property_append_usec, "t", &u->meta.job_timeout }
int bus_unit_append_names(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_following(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_dependencies(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_description(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_load_state(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_active_state(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_sub_state(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_can_start(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_can_stop(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_can_reload(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_can_isolate(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_job(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_default_cgroup(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_cgroups(Manager *m, DBusMessageIter *i, const char *property, void *data);
int bus_unit_append_need_daemon_reload(Manager *m, DBusMessageIter *i, const char *property, void *data);
void bus_unit_send_change_signal(Unit *u);
void bus_unit_send_removed_signal(Unit *u);
extern const DBusObjectPathVTable bus_unit_vtable;
extern const char bus_unit_interface[];
#endif