PageRenderTime 60ms CodeModel.GetById 52ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/library/server/fcgi/spec/include/libfcgi/fastcgi.h

http://github.com/jocelyn/EiffelWebReloaded
C++ Header | 136 lines | 71 code | 24 blank | 41 comment | 0 complexity | c2556d343e1ddc4b0c1188ff82bff9aa MD5 | raw file
  1/* 
  2 * fastcgi.h --
  3 *
  4 *	Defines for the FastCGI protocol.
  5 *
  6 *
  7 * Copyright (c) 1995-1996 Open Market, Inc.
  8 *
  9 * See the file "LICENSE.TERMS" for information on usage and redistribution
 10 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 11 *
 12 * $Id: fastcgi.h,v 1.1.1.1 1997/09/16 15:36:32 stanleyg Exp $
 13 */
 14
 15#ifndef _FASTCGI_H

 16#define _FASTCGI_H

 17
 18/*
 19 * Listening socket file number
 20 */
 21#define FCGI_LISTENSOCK_FILENO 0

 22
 23typedef struct {
 24    unsigned char version;
 25    unsigned char type;
 26    unsigned char requestIdB1;
 27    unsigned char requestIdB0;
 28    unsigned char contentLengthB1;
 29    unsigned char contentLengthB0;
 30    unsigned char paddingLength;
 31    unsigned char reserved;
 32} FCGI_Header;
 33
 34#define FCGI_MAX_LENGTH 0xffff

 35
 36/*
 37 * Number of bytes in a FCGI_Header.  Future versions of the protocol
 38 * will not reduce this number.
 39 */
 40#define FCGI_HEADER_LEN  8

 41
 42/*
 43 * Value for version component of FCGI_Header
 44 */
 45#define FCGI_VERSION_1           1

 46
 47/*
 48 * Values for type component of FCGI_Header
 49 */
 50#define FCGI_BEGIN_REQUEST       1

 51#define FCGI_ABORT_REQUEST       2

 52#define FCGI_END_REQUEST         3

 53#define FCGI_PARAMS              4

 54#define FCGI_STDIN               5

 55#define FCGI_STDOUT              6

 56#define FCGI_STDERR              7

 57#define FCGI_DATA                8

 58#define FCGI_GET_VALUES          9

 59#define FCGI_GET_VALUES_RESULT  10

 60#define FCGI_UNKNOWN_TYPE       11

 61#define FCGI_MAXTYPE (FCGI_UNKNOWN_TYPE)

 62
 63/*
 64 * Value for requestId component of FCGI_Header
 65 */
 66#define FCGI_NULL_REQUEST_ID     0

 67
 68
 69typedef struct {
 70    unsigned char roleB1;
 71    unsigned char roleB0;
 72    unsigned char flags;
 73    unsigned char reserved[5];
 74} FCGI_BeginRequestBody;
 75
 76typedef struct {
 77    FCGI_Header header;
 78    FCGI_BeginRequestBody body;
 79} FCGI_BeginRequestRecord;
 80
 81/*
 82 * Mask for flags component of FCGI_BeginRequestBody
 83 */
 84#define FCGI_KEEP_CONN  1

 85
 86/*
 87 * Values for role component of FCGI_BeginRequestBody
 88 */
 89#define FCGI_RESPONDER  1

 90#define FCGI_AUTHORIZER 2

 91#define FCGI_FILTER     3

 92
 93
 94typedef struct {
 95    unsigned char appStatusB3;
 96    unsigned char appStatusB2;
 97    unsigned char appStatusB1;
 98    unsigned char appStatusB0;
 99    unsigned char protocolStatus;
100    unsigned char reserved[3];
101} FCGI_EndRequestBody;
102
103typedef struct {
104    FCGI_Header header;
105    FCGI_EndRequestBody body;
106} FCGI_EndRequestRecord;
107
108/*
109 * Values for protocolStatus component of FCGI_EndRequestBody
110 */
111#define FCGI_REQUEST_COMPLETE 0

112#define FCGI_CANT_MPX_CONN    1

113#define FCGI_OVERLOADED       2

114#define FCGI_UNKNOWN_ROLE     3

115
116
117/*
118 * Variable names for FCGI_GET_VALUES / FCGI_GET_VALUES_RESULT records
119 */
120#define FCGI_MAX_CONNS  "FCGI_MAX_CONNS"

121#define FCGI_MAX_REQS   "FCGI_MAX_REQS"

122#define FCGI_MPXS_CONNS "FCGI_MPXS_CONNS"

123
124
125typedef struct {
126    unsigned char type;    
127    unsigned char reserved[7];
128} FCGI_UnknownTypeBody;
129
130typedef struct {
131    FCGI_Header header;
132    FCGI_UnknownTypeBody body;
133} FCGI_UnknownTypeRecord;
134
135#endif	/* _FASTCGI_H */

136