chiark / gitweb /
fcf09dd0df7dad2b8c61d0ac87ce1e8e9606f2b3
[elogind.git] / socket.h
1 /*-*- Mode: C; c-basic-offset: 8 -*-*/
2
3 #ifndef foosockethfoo
4 #define foosockethfoo
5
6 typedef struct Socket Socket;
7
8 #include "name.h"
9
10 typedef enum SocketState {
11         SOCKET_DEAD,
12         SOCKET_START_PRE,
13         SOCKET_START_POST,
14         SOCKET_LISTENING,
15         SOCKET_RUNNING,
16         SOCKET_STOP_PRE,
17         SOCKET_STOP_POST,
18         SOCKET_MAINTAINANCE,
19         _SOCKET_STATE_MAX
20 } SocketState;
21
22 typedef enum SocketExecCommand {
23         SOCKET_EXEC_START_PRE,
24         SOCKET_EXEC_START_POST,
25         SOCKET_EXEC_STOP_PRE,
26         SOCKET_EXEC_STOP_POST,
27         _SOCKET_EXEC_MAX
28 } SocketExecCommand;
29
30 struct Socket {
31         Meta meta;
32
33         SocketState state;
34
35         Address address;
36         int *fds;
37         unsigned n_fds;
38
39         ExecCommand* exec_command[_SOCKET_EXEC_MAX];
40         ExecContext exec_context;
41
42         pid_t control_pid;
43
44         Service *service;
45 };
46
47 extern const NameVTable socket_vtable;
48
49 #endif