initial load of upstream version 1.06.32
[xmlrpc-c] / lib / abyss / src / server.h
diff --git a/lib/abyss/src/server.h b/lib/abyss/src/server.h
new file mode 100644 (file)
index 0000000..db8bc79
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef SERVER_H_INCLUDED
+#define SERVER_H_INCLUDED
+
+#include <sys/types.h>
+
+#include "xmlrpc-c/abyss.h"
+
+#include "file.h"
+#include "data.h"
+
+typedef struct _Tsocket Tsocket;
+
+struct _TServer {
+    abyss_bool terminationRequested;
+        /* User wants this server to terminate as soon as possible,
+           in particular before accepting any more connections and without
+           waiting for any.
+        */
+    abyss_bool socketBound;
+        /* The listening socket exists and is bound to a local address
+           (may already be listening as well)
+        */
+    TSocket * listenSocketP;
+        /* Meaningful only when 'socketBound' is true: file descriptor of
+           the listening socket ("listening socket" means socket for listening,
+           not a socket that is listening right now).
+        */
+    abyss_bool weCreatedListenSocket;
+        /* We created the listen socket (whose fd is 'listensock'), as
+           opposed to 1) User supplied it; or 2) there isn't one.
+        */
+    const char * logfilename;
+    abyss_bool logfileisopen;
+    TFile logfile;
+    TMutex logmutex;
+    const char * name;
+    const char * filespath;
+    abyss_bool serverAcceptsConnections;
+        /* We listen for and accept TCP connections for HTTP transactions.
+           (The alternative is the user supplies a TCP-connected socket
+           for each transaction)
+        */
+    uint16_t port;
+        /* Meaningful only when 'socketBound' is false: port number to which
+           we should bind the listening socket
+        */
+    uint32_t keepalivetimeout;
+    uint32_t keepalivemaxconn;
+    uint32_t timeout;
+        /* Maximum time in seconds the server will wait to read a header
+           or a data chunk from the socket.
+        */
+    TList handlers;
+    TList defaultfilenames;
+    void * defaulthandler;
+    abyss_bool advertise;
+    MIMEType * mimeTypeP;
+        /* NULL means to use the global MIMEType object */
+    abyss_bool useSigchld;
+        /* Meaningless if not using forking for threads.
+           TRUE means user will call ServerHandleSigchld to indicate that
+           a SIGCHLD signal was received, and server shall use that as its
+           indication that a child has died.  FALSE means server will not
+           be aware of SIGCHLD and will instead poll for existence of PIDs
+           to determine if a child has died.
+        */
+#ifndef WIN32
+    uid_t uid;
+    gid_t gid;
+    TFile pidfile;
+#endif
+};
+
+
+void
+ServerBackgroundProcessComplete(pid_t const pid);
+
+#endif