chiark / gitweb /
first attempt in implementinging execution logic
[elogind.git] / socket.h
diff --git a/socket.h b/socket.h
new file mode 100644 (file)
index 0000000..fcf09dd
--- /dev/null
+++ b/socket.h
@@ -0,0 +1,49 @@
+/*-*- Mode: C; c-basic-offset: 8 -*-*/
+
+#ifndef foosockethfoo
+#define foosockethfoo
+
+typedef struct Socket Socket;
+
+#include "name.h"
+
+typedef enum SocketState {
+        SOCKET_DEAD,
+        SOCKET_START_PRE,
+        SOCKET_START_POST,
+        SOCKET_LISTENING,
+        SOCKET_RUNNING,
+        SOCKET_STOP_PRE,
+        SOCKET_STOP_POST,
+        SOCKET_MAINTAINANCE,
+        _SOCKET_STATE_MAX
+} SocketState;
+
+typedef enum SocketExecCommand {
+        SOCKET_EXEC_START_PRE,
+        SOCKET_EXEC_START_POST,
+        SOCKET_EXEC_STOP_PRE,
+        SOCKET_EXEC_STOP_POST,
+        _SOCKET_EXEC_MAX
+} SocketExecCommand;
+
+struct Socket {
+        Meta meta;
+
+        SocketState state;
+
+        Address address;
+        int *fds;
+        unsigned n_fds;
+
+        ExecCommand* exec_command[_SOCKET_EXEC_MAX];
+        ExecContext exec_context;
+
+        pid_t control_pid;
+
+        Service *service;
+};
+
+extern const NameVTable socket_vtable;
+
+#endif