/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. #ifndef _FASTCGI_H
  15. #define _FASTCGI_H
  16. /*
  17. * Listening socket file number
  18. */
  19. #define FCGI_LISTENSOCK_FILENO 0
  20. typedef struct {
  21. unsigned char version;
  22. unsigned char type;
  23. unsigned char requestIdB1;
  24. unsigned char requestIdB0;
  25. unsigned char contentLengthB1;
  26. unsigned char contentLengthB0;
  27. unsigned char paddingLength;
  28. unsigned char reserved;
  29. } FCGI_Header;
  30. #define FCGI_MAX_LENGTH 0xffff
  31. /*
  32. * Number of bytes in a FCGI_Header. Future versions of the protocol
  33. * will not reduce this number.
  34. */
  35. #define FCGI_HEADER_LEN 8
  36. /*
  37. * Value for version component of FCGI_Header
  38. */
  39. #define FCGI_VERSION_1 1
  40. /*
  41. * Values for type component of FCGI_Header
  42. */
  43. #define FCGI_BEGIN_REQUEST 1
  44. #define FCGI_ABORT_REQUEST 2
  45. #define FCGI_END_REQUEST 3
  46. #define FCGI_PARAMS 4
  47. #define FCGI_STDIN 5
  48. #define FCGI_STDOUT 6
  49. #define FCGI_STDERR 7
  50. #define FCGI_DATA 8
  51. #define FCGI_GET_VALUES 9
  52. #define FCGI_GET_VALUES_RESULT 10
  53. #define FCGI_UNKNOWN_TYPE 11
  54. #define FCGI_MAXTYPE (FCGI_UNKNOWN_TYPE)
  55. /*
  56. * Value for requestId component of FCGI_Header
  57. */
  58. #define FCGI_NULL_REQUEST_ID 0
  59. typedef struct {
  60. unsigned char roleB1;
  61. unsigned char roleB0;
  62. unsigned char flags;
  63. unsigned char reserved[5];
  64. } FCGI_BeginRequestBody;
  65. typedef struct {
  66. FCGI_Header header;
  67. FCGI_BeginRequestBody body;
  68. } FCGI_BeginRequestRecord;
  69. /*
  70. * Mask for flags component of FCGI_BeginRequestBody
  71. */
  72. #define FCGI_KEEP_CONN 1
  73. /*
  74. * Values for role component of FCGI_BeginRequestBody
  75. */
  76. #define FCGI_RESPONDER 1
  77. #define FCGI_AUTHORIZER 2
  78. #define FCGI_FILTER 3
  79. typedef struct {
  80. unsigned char appStatusB3;
  81. unsigned char appStatusB2;
  82. unsigned char appStatusB1;
  83. unsigned char appStatusB0;
  84. unsigned char protocolStatus;
  85. unsigned char reserved[3];
  86. } FCGI_EndRequestBody;
  87. typedef struct {
  88. FCGI_Header header;
  89. FCGI_EndRequestBody body;
  90. } FCGI_EndRequestRecord;
  91. /*
  92. * Values for protocolStatus component of FCGI_EndRequestBody
  93. */
  94. #define FCGI_REQUEST_COMPLETE 0
  95. #define FCGI_CANT_MPX_CONN 1
  96. #define FCGI_OVERLOADED 2
  97. #define FCGI_UNKNOWN_ROLE 3
  98. /*
  99. * Variable names for FCGI_GET_VALUES / FCGI_GET_VALUES_RESULT records
  100. */
  101. #define FCGI_MAX_CONNS "FCGI_MAX_CONNS"
  102. #define FCGI_MAX_REQS "FCGI_MAX_REQS"
  103. #define FCGI_MPXS_CONNS "FCGI_MPXS_CONNS"
  104. typedef struct {
  105. unsigned char type;
  106. unsigned char reserved[7];
  107. } FCGI_UnknownTypeBody;
  108. typedef struct {
  109. FCGI_Header header;
  110. FCGI_UnknownTypeBody body;
  111. } FCGI_UnknownTypeRecord;
  112. #endif /* _FASTCGI_H */