File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / sapi / cgi / fastcgi.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 5 months ago) by misho
Branches: php, MAIN
CVS tags: v5_3_10, HEAD
php

    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,v 1.1.1.1 2012/02/21 23:48:06 misho Exp $ */
   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>