Annotation of embedaddon/php/sapi/cgi/fastcgi.h, revision 1.1
1.1 ! misho 1: /*
! 2: +----------------------------------------------------------------------+
! 3: | PHP Version 5 |
! 4: +----------------------------------------------------------------------+
! 5: | Copyright (c) 1997-2012 The PHP Group |
! 6: +----------------------------------------------------------------------+
! 7: | This source file is subject to version 3.01 of the PHP license, |
! 8: | that is bundled with this package in the file LICENSE, and is |
! 9: | available through the world-wide-web at the following url: |
! 10: | http://www.php.net/license/3_01.txt |
! 11: | If you did not receive a copy of the PHP license and are unable to |
! 12: | obtain it through the world-wide-web, please send a note to |
! 13: | license@php.net so we can mail you a copy immediately. |
! 14: +----------------------------------------------------------------------+
! 15: | Authors: Dmitry Stogov <dmitry@zend.com> |
! 16: +----------------------------------------------------------------------+
! 17: */
! 18:
! 19: /* $Id: fastcgi.h 321634 2012-01-01 13:15:04Z felipe $ */
! 20:
! 21: /* FastCGI protocol */
! 22:
! 23: #define FCGI_VERSION_1 1
! 24:
! 25: #define FCGI_MAX_LENGTH 0xffff
! 26:
! 27: #define FCGI_KEEP_CONN 1
! 28:
! 29: typedef enum _fcgi_role {
! 30: FCGI_RESPONDER = 1,
! 31: FCGI_AUTHORIZER = 2,
! 32: FCGI_FILTER = 3
! 33: } fcgi_role;
! 34:
! 35: typedef enum _fcgi_request_type {
! 36: FCGI_BEGIN_REQUEST = 1, /* [in] */
! 37: FCGI_ABORT_REQUEST = 2, /* [in] (not supported) */
! 38: FCGI_END_REQUEST = 3, /* [out] */
! 39: FCGI_PARAMS = 4, /* [in] environment variables */
! 40: FCGI_STDIN = 5, /* [in] post data */
! 41: FCGI_STDOUT = 6, /* [out] response */
! 42: FCGI_STDERR = 7, /* [out] errors */
! 43: FCGI_DATA = 8, /* [in] filter data (not supported) */
! 44: FCGI_GET_VALUES = 9, /* [in] */
! 45: FCGI_GET_VALUES_RESULT = 10 /* [out] */
! 46: } fcgi_request_type;
! 47:
! 48: typedef enum _fcgi_protocol_status {
! 49: FCGI_REQUEST_COMPLETE = 0,
! 50: FCGI_CANT_MPX_CONN = 1,
! 51: FCGI_OVERLOADED = 2,
! 52: FCGI_UNKNOWN_ROLE = 3
! 53: } dcgi_protocol_status;
! 54:
! 55: typedef struct _fcgi_header {
! 56: unsigned char version;
! 57: unsigned char type;
! 58: unsigned char requestIdB1;
! 59: unsigned char requestIdB0;
! 60: unsigned char contentLengthB1;
! 61: unsigned char contentLengthB0;
! 62: unsigned char paddingLength;
! 63: unsigned char reserved;
! 64: } fcgi_header;
! 65:
! 66: typedef struct _fcgi_begin_request {
! 67: unsigned char roleB1;
! 68: unsigned char roleB0;
! 69: unsigned char flags;
! 70: unsigned char reserved[5];
! 71: } fcgi_begin_request;
! 72:
! 73: typedef struct _fcgi_begin_request_rec {
! 74: fcgi_header hdr;
! 75: fcgi_begin_request body;
! 76: } fcgi_begin_request_rec;
! 77:
! 78: typedef struct _fcgi_end_request {
! 79: unsigned char appStatusB3;
! 80: unsigned char appStatusB2;
! 81: unsigned char appStatusB1;
! 82: unsigned char appStatusB0;
! 83: unsigned char protocolStatus;
! 84: unsigned char reserved[3];
! 85: } fcgi_end_request;
! 86:
! 87: typedef struct _fcgi_end_request_rec {
! 88: fcgi_header hdr;
! 89: fcgi_end_request body;
! 90: } fcgi_end_request_rec;
! 91:
! 92: /* FastCGI client API */
! 93:
! 94: typedef struct _fcgi_request {
! 95: int listen_socket;
! 96: #ifdef _WIN32
! 97: int tcp;
! 98: #endif
! 99: int fd;
! 100: int id;
! 101: int keep;
! 102: int closed;
! 103:
! 104: int in_len;
! 105: int in_pad;
! 106:
! 107: fcgi_header *out_hdr;
! 108: unsigned char *out_pos;
! 109: unsigned char out_buf[1024*8];
! 110: unsigned char reserved[sizeof(fcgi_end_request_rec)];
! 111:
! 112: HashTable *env;
! 113: } fcgi_request;
! 114:
! 115: int fcgi_init(void);
! 116: void fcgi_shutdown(void);
! 117: int fcgi_is_fastcgi(void);
! 118: int fcgi_in_shutdown(void);
! 119: int fcgi_listen(const char *path, int backlog);
! 120: void fcgi_init_request(fcgi_request *req, int listen_socket);
! 121: int fcgi_accept_request(fcgi_request *req);
! 122: int fcgi_finish_request(fcgi_request *req, int force_close);
! 123:
! 124: char* fcgi_getenv(fcgi_request *req, const char* var, int var_len);
! 125: char* fcgi_putenv(fcgi_request *req, char* var, int var_len, char* val);
! 126:
! 127: int fcgi_read(fcgi_request *req, char *str, int len);
! 128:
! 129: int fcgi_write(fcgi_request *req, fcgi_request_type type, const char *str, int len);
! 130: int fcgi_flush(fcgi_request *req, int close);
! 131:
! 132: #ifdef PHP_WIN32
! 133: void fcgi_impersonate(void);
! 134: #endif
! 135:
! 136: void fcgi_set_mgmt_var(const char * name, size_t name_len, const char * value, size_t value_len);
! 137: void fcgi_free_mgmt_var_cb(void * ptr);
! 138:
! 139: /*
! 140: * Local variables:
! 141: * tab-width: 4
! 142: * c-basic-offset: 4
! 143: * End:
! 144: * vim600: sw=4 ts=4 fdm=marker
! 145: * vim<600: sw=4 ts=4
! 146: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>