chiark / gitweb /
first try at implementing job creation
[elogind.git] / name.h
diff --git a/name.h b/name.h
index 062c95aa14e90d0ea01093ca7fb27d787f59c6db..67ca6f10ef5e13fc326701a59970012e8cce5f9a 100644 (file)
--- a/name.h
+++ b/name.h
@@ -22,6 +22,7 @@ typedef struct Snapshot Snapshot;
 #include "set.h"
 #include "util.h"
 #include "list.h"
+#include "socket-util.h"
 
 typedef enum NameType {
         NAME_SERVICE = 0,
@@ -39,27 +40,37 @@ typedef enum NameType {
 typedef enum NameState {
         NAME_STUB,
         NAME_LOADED,
-        NAME_FAILED
+        NAME_FAILED,
+        _NAME_STATE_MAX
 } NameState;
 
-struct Meta {
-        Manager *manager;
-        NameType type;
-        NameState state;
-
-        char **names;
-
+typedef enum NameDependency {
         /* Positive dependencies */
-        Set *requires, *soft_requires, *wants, *requisite, *soft_requisite;
-        Set *required_by;    /* inverse of 'requires', 'soft_requires', 'requisite' and 'soft_requisite' is 'required_by' */
+        NAME_REQUIRES,
+        NAME_SOFT_REQUIRES,
+        NAME_WANTS,
+        NAME_REQUISITE,
+        NAME_SOFT_REQUISITE,
+        NAME_REQUIRED_BY,   /* inverse of 'requires' and 'requisite' is 'required_by' */
+        NAME_WANTED_BY,     /* inverse of 'wants', 'soft_requires' and 'soft_requisite' is 'wanted_by' */
 
         /* Negative dependencies */
-        Set *conflicts;      /* inverse of 'conflicts' is 'conflicts' */
+        NAME_CONFLICTS,     /* inverse of 'conflicts' is 'conflicts' */
 
         /* Order */
-        Set *before, *after; /* inverse of before is after and vice versa */
+        NAME_BEFORE,        /* inverse of before is after and vice versa */
+        NAME_AFTER,
+        _NAME_DEPENDENCY_MAX
+} NameDependency;
+
+struct Meta {
+        Manager *manager;
+        NameType type;
+        NameState state;
+
+        Set *names;
+        Set *dependencies[_NAME_DEPENDENCY_MAX];
 
-        /* Information */
         char *description;
 
         /* If there is something to do with this name, then this is
@@ -138,13 +149,16 @@ typedef enum SocketState {
         SOCKET_STOP_PRE,
         SOCKET_STOP,
         SOCKET_STOP_POST,
-        SOCKET_MAINTAINANCE
+        SOCKET_MAINTAINANCE,
+        _SOCKET_STATE_MAX
 } SocketState;
 
 struct Socket {
         Meta meta;
 
         SocketState state;
+
+        Address address;
         int *fds;
         unsigned n_fds;
 
@@ -265,7 +279,11 @@ bool name_is_valid(const char *n);
 Name *name_new(Manager *m);
 void name_free(Name *name);
 int name_link(Name *name);
-
+int name_link_names(Name *name);
+int name_merge(Name *name, Name *other);
 int name_augment(Name *n);
+const char* name_id(Name *n);
+
+void name_dump(Name *n, FILE *f);
 
 #endif