chiark / gitweb /
unit: make ignoring in snapshots a per unit property, instead of a per unit type...
[elogind.git] / src / unit.h
index e81cffca3a00efa33e47e0ee09586565280f6b76..717c928075589f860152f0d91ea99c773d65ddb6 100644 (file)
@@ -40,9 +40,6 @@ typedef enum UnitDependency UnitDependency;
 #include "execute.h"
 #include "condition.h"
 
-#define DEFAULT_TIMEOUT_USEC (3*USEC_PER_MINUTE)
-#define DEFAULT_RESTART_USEC (100*USEC_PER_MSEC)
-
 enum UnitType {
         UNIT_SERVICE = 0,
         UNIT_SOCKET,
@@ -160,6 +157,8 @@ struct Meta {
         /* Conditions to check */
         LIST_HEAD(Condition, conditions);
 
+        dual_timestamp condition_timestamp;
+
         dual_timestamp inactive_exit_timestamp;
         dual_timestamp active_enter_timestamp;
         dual_timestamp active_exit_timestamp;
@@ -196,7 +195,7 @@ struct Meta {
         /* Garbage collect us we nobody wants or requires us anymore */
         bool stop_when_unneeded;
 
-        /* Create default depedencies */
+        /* Create default dependencies */
         bool default_dependencies;
 
         /* Refuse manual starting, allow starting only indirectly via dependency. */
@@ -208,6 +207,18 @@ struct Meta {
         /* Allow isolation requests */
         bool allow_isolate;
 
+        /* Isolate OnFailure unit */
+        bool on_failure_isolate;
+
+        /* Ignore this unit when isolating */
+        bool ignore_on_isolate;
+
+        /* Ignore this unit when snapshotting */
+        bool ignore_on_snapshot;
+
+        /* Did the last condition check suceed? */
+        bool condition_result;
+
         bool in_load_queue:1;
         bool in_dbus_queue:1;
         bool in_cleanup_queue:1;
@@ -290,7 +301,7 @@ struct UnitVTable {
 
         /* Returns the substate specific to this unit type as
          * string. This is purely information so that we can give the
-         * user a more finegrained explanation in which actual state a
+         * user a more fine grained explanation in which actual state a
          * unit is in. */
         const char* (*sub_state_to_string)(Unit *u);
 
@@ -356,15 +367,9 @@ struct UnitVTable {
         /* Instances make no sense for this type */
         bool no_instances:1;
 
-        /* Exclude this type from snapshots */
-        bool no_snapshots:1;
-
         /* Exclude from automatic gc */
         bool no_gc:1;
 
-        /* Exclude from stopping on isolation requests */
-        bool no_isolate:1;
-
         /* Show status updates on the console */
         bool show_status:1;
 };
@@ -511,6 +516,10 @@ int unit_following_set(Unit *u, Set **s);
 UnitType unit_name_to_type(const char *n);
 bool unit_name_is_valid(const char *n, bool template_ok);
 
+void unit_trigger_on_failure(Unit *u);
+
+bool unit_condition_test(Unit *u);
+
 const char *unit_load_state_to_string(UnitLoadState i);
 UnitLoadState unit_load_state_from_string(const char *s);