first attempt at proper service/socket logic

This commit is contained in:
Lennart Poettering
2010-01-26 04:18:44 +01:00
parent 9152c76506
commit 034c6ed7da
32 changed files with 2856 additions and 611 deletions
+14 -4
View File
@@ -15,7 +15,11 @@ typedef enum SocketState {
SOCKET_LISTENING,
SOCKET_RUNNING,
SOCKET_STOP_PRE,
SOCKET_STOP_PRE_SIGTERM,
SOCKET_STOP_PRE_SIGKILL,
SOCKET_STOP_POST,
SOCKET_STOP_POST_SIGTERM,
SOCKET_STOP_POST_SIGKILL,
SOCKET_MAINTAINANCE,
_SOCKET_STATE_MAX
} SocketState;
@@ -43,26 +47,32 @@ struct SocketPort {
int fd;
LIST_FIELDS(SocketPort);
LIST_FIELDS(SocketPort, port);
};
struct Socket {
Meta meta;
SocketState state;
LIST_HEAD(SocketPort, ports);
/* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */
bool bind_ipv6_only;
unsigned backlog;
usec_t timeout_usec;
ExecCommand* exec_command[_SOCKET_EXEC_MAX];
ExecContext exec_context;
Service *service;
SocketState state;
ExecCommand* control_command;
pid_t control_pid;
Service *service;
bool failure;
int timer_id;
};
extern const NameVTable socket_vtable;