X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=name.h;h=67ca6f10ef5e13fc326701a59970012e8cce5f9a;hp=062c95aa14e90d0ea01093ca7fb27d787f59c6db;hb=11dd41ce4b465f6260ce68aa050a488f88f694eb;hpb=07232470c869976ae2d7a36799bc6b0126d7e820 diff --git a/name.h b/name.h index 062c95aa1..67ca6f10e 100644 --- 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