Add
[catagits/fcgi2.git] / include / fcgios.h
CommitLineData
ee03fac4 1/*
0198fd3c 2 * fcgios.h --
3 *
4 * Description of file.
5 *
6 *
7 * Copyright (c) 1996 Open Market, Inc.
8 * All rights reserved.
9 *
10 * This file contains proprietary and confidential information and
ee03fac4 11 * remains the unpublished property of Open Market, Inc. Use,
12 * disclosure, or reproduction is prohibited except as permitted by
13 * express written license agreement with Open Market, Inc.
0198fd3c 14 *
15 * Bill Snapper
16 * snapper@openmarket.com
17 */
18#ifndef _FCGIOS_H
19#define _FCGIOS_H
20
a2355203 21#ifdef _WIN32
22#define WIN32_LEAN_AND_MEAN
23#include <windows.h>
24#include <winsock2.h>
25#endif
26
344bf056 27#include "fcgi_config.h"
28
344bf056 29#ifdef HAVE_SYS_TIME_H
30#include <sys/time.h>
31#endif
32
33#if defined (c_plusplus) || defined (__cplusplus)
34extern "C" {
35#endif
36
344bf056 37#ifdef _WIN32
0198fd3c 38#define OS_Errno GetLastError()
39#define OS_SetErrno(err) SetLastError(err)
344bf056 40#ifndef O_NONBLOCK
41#define O_NONBLOCK 0x0004 /* no delay */
fdb63fa0 42#endif
344bf056 43#else /* !_WIN32 */
0198fd3c 44#define OS_Errno errno
45#define OS_SetErrno(err) errno = (err)
344bf056 46#endif /* !_WIN32 */
0198fd3c 47
e6368b61 48#ifndef DLLAPI
49#ifdef _WIN32
50#define DLLAPI __declspec(dllimport)
51#else
52#define DLLAPI
53#endif
54#endif
55
56
4a7222d7 57/* This is the initializer for a "struct timeval" used in a select() call
58 * right after a new request is accept()ed to determine readablity. Its
59 * a drop-dead timer. Its only used for AF_UNIX sockets (not TCP sockets).
60 * Its a workaround for a kernel bug in Linux 2.0.x and SCO Unixware.
61 * Making this as small as possible, yet remain reliable would be best.
ee03fac4 62 * 2 seconds is very conservative. 0,0 is not reliable. The shorter the
4a7222d7 63 * timeout, the faster request processing will recover. The longer the
64 * timeout, the more likely this application being "busy" will cause other
65 * requests to abort and cause more dead sockets that need this timeout. */
66#define READABLE_UNIX_FD_DROP_DEAD_TIMEVAL 2,0
67
0198fd3c 68#ifndef STDIN_FILENO
69#define STDIN_FILENO 0
70#endif
71
0198fd3c 72#ifndef STDOUT_FILENO
73#define STDOUT_FILENO 1
74#endif
75
76#ifndef STDERR_FILENO
77#define STDERR_FILENO 2
78#endif
79
80#ifndef MAXPATHLEN
81#define MAXPATHLEN 1024
82#endif
83
84#ifndef X_OK
85#define X_OK 0x01
86#endif
87
0198fd3c 88#ifndef _CLIENTDATA
89# if defined(__STDC__) || defined(__cplusplus)
90 typedef void *ClientData;
91# else
92 typedef int *ClientData;
93# endif /* __STDC__ */
94#define _CLIENTDATA
95#endif
96
97typedef void (*OS_AsyncProc) (ClientData clientData, int len);
98
99DLLAPI int OS_LibInit(int stdioFds[3]);
100DLLAPI void OS_LibShutdown(void);
0b7c9662 101DLLAPI int OS_CreateLocalIpcFd(const char *bindPath, int backlog);
0198fd3c 102DLLAPI int OS_FcgiConnect(char *bindPath);
103DLLAPI int OS_Read(int fd, char * buf, size_t len);
104DLLAPI int OS_Write(int fd, char * buf, size_t len);
105DLLAPI int OS_SpawnChild(char *execPath, int listenFd);
ee03fac4 106DLLAPI int OS_AsyncReadStdin(void *buf, int len, OS_AsyncProc procPtr,
0198fd3c 107 ClientData clientData);
108DLLAPI int OS_AsyncRead(int fd, int offset, void *buf, int len,
109 OS_AsyncProc procPtr, ClientData clientData);
ee03fac4 110DLLAPI int OS_AsyncWrite(int fd, int offset, void *buf, int len,
0198fd3c 111 OS_AsyncProc procPtr, ClientData clientData);
112DLLAPI int OS_Close(int fd);
113DLLAPI int OS_CloseRead(int fd);
114DLLAPI int OS_DoIo(struct timeval *tmo);
1dd5d7a8 115DLLAPI int OS_Accept(int listen_sock, int fail_on_intr, const char *webServerAddrs);
0198fd3c 116DLLAPI int OS_IpcClose(int ipcFd);
0b7c9662 117DLLAPI int OS_IsFcgi(int sock);
0198fd3c 118DLLAPI void OS_SetFlags(int fd, int flags);
119
d0686b0d 120#ifdef WIN32
121#define OS_ShutdownNow
122#define OS_ShutdownPending
123#define OS_SigtermHandler
124#define OS_Sigusr1Handler
125#define OS_SigpipeHandler
126#define OS_InstallSignalHandlers
127#else
128void OS_ShutdownNow(void);
129void OS_ShutdownPending(void);
130void OS_SigtermHandler(int signo);
131void OS_Sigusr1Handler(int signo);
132void OS_SigpipeHandler(int signo);
133void OS_InstallSignalHandlers(int force);
134#endif
135
0198fd3c 136#if defined (__cplusplus) || defined (c_plusplus)
137} /* terminate extern "C" { */
138#endif
139
140#endif /* _FCGIOS_H */