www.pudn.com > acdx.rar > HttpRequest.h


#if !defined(HttpRequest_H) 
#define HttpRequest_H 
 
 
#include "HttpBuffer.h" 
#include "TimeStamp.h" 
 
#include  
#include  
#include  
#include  
using namespace std; 
 
 
#pragma warning( disable:4172 ) 
 
enum 
{ 
	idAppNoExecute  = 0x0000, 
	idAppExecute = 0x0001, 
	idAppCgi     = 0x0002, 
	idAppIsapi   = 0x0004  
}; 
 
 
//##ModelId=424BB6440324 
enum REQSTATUS 
{ 
	//##ModelId=424BB6440326 
	REQ_REQUEST=0,  
	//##ModelId=424BB6440334 
	REQ_HEADER, 
	//##ModelId=424BB6440343 
	REQ_BODY,  
	//##ModelId=424BB6440344 
	REQ_SIMPLE,  
	//##ModelId=424BB6440353 
	REQ_DONE 
}; 
 
 
 
///////////////////////////////////////////////////////////////////////////////////// 
// HttpRequest 
// 
// Purpose:	represent an http request 
 
//##ModelId=424BB6440354 
typedef map				StringMap; 
//##ModelId=424BB6440364 
typedef StringMap::iterator				itrStringMap; 
//##ModelId=424BB6440373 
typedef StringMap::reverse_iterator		revItrStringMap; 
 
 
//##ModelId=424BB64403C0 
class HttpRequest : 
	public HttpBuffer 
{ 
public: 
 
	////////////////////////////////////////////////////////// 
	// http request format  
	// 
	// Request Line Required 
	// General Header Optional 
	// Request Header Optional 
	// Entity Header Optional 
	// Entity Body Optional 
 
	//##ModelId=424BB64403C3 
	string			_url;				// url for request 
	//##ModelId=424BB64403D1 
	string			_path;				// full path for request 
	//##ModelId=424BB64403E1 
	string			_pathInfo;			// path information 
	//##ModelId=424BB64403E6 
	string			_pathTranslated;	// path translated 
	//##ModelId=424BB6450008 
	string			_method;			// request method 
	//##ModelId=424BB6450018 
	string			_args;				// args for request 
	//##ModelId=424BB6450028 
	string			_host;				// host for request 
	//##ModelId=424BB645002D 
	string			_version;			// http version 
	//##ModelId=424BB6450036 
	long			_execute;			// shows if execute app 
	//##ModelId=424BB6450046 
	long			_status;			// shows status of request 
	//##ModelId=424BB6450047 
	long			_attributes;		// request attributes 
	//##ModelId=424BB6450055 
	long			_processState;		// request processing state 
	//##ModelId=424BB6450066 
	StringMap		_headers;			// param-value pairs 
	//##ModelId=424BB6450075 
	long			_length;			// lenght of request 
 
public: 
 
	//##ModelId=424BB6450084 
	HttpRequest ( string & version = string("1.0") ); 
	//##ModelId=424BB6450086 
	virtual ~HttpRequest (); 
 
	// create/release 
	//##ModelId=424BB6450088 
	bool create  (); 
	//##ModelId=424BB6450094 
	bool create  ( long request, string & file = string("") ); 
	//##ModelId=424BB64500A4 
	void release (); 
 
 
	// get/set state 
	//##ModelId=424BB64500A5 
	void setState ( HttpRequest & request ) 
	{ 
		*this = request; 
	} 
 
	//##ModelId=424BB64500B3 
	void getState ( HttpRequest & request ) 
	{ 
		request = *this; 
	} 
 
	// operators 
	//##ModelId=424BB64500B5 
	void operator = ( const HttpRequest & request ); 
 
 
	// access methods 
	//##ModelId=424BB64500C4 
	string & getUrl () 
	{ 
		return _url; 
	} 
 
	//##ModelId=424BB64500C5 
	void setUrl ( string & set ) 
	{ 
		_url = set; 
	} 
 
	//##ModelId=424BB64500D3 
	string & getFullPath () 
	{ 
		return _path; 
	} 
 
	//##ModelId=424BB64500D4 
	void setFullPath ( string & set ) 
	{ 
		_path = set; 
	} 
 
	//##ModelId=424BB64500E3 
	string & getPathInfo () 
	{ 
		return _pathInfo; 
	} 
 
	//##ModelId=424BB64500E4 
	void setPathInfo ( string & set ) 
	{ 
		_pathInfo = set; 
	} 
 
	//##ModelId=424BB64500F3 
	string & getPathTranslated () 
	{ 
		return _pathTranslated; 
	} 
 
	//##ModelId=424BB64500F4 
	void setPathTranslated ( string & set ) 
	{ 
		_pathTranslated = set; 
	} 
 
	//##ModelId=424BB6450101 
	string & getMethod () 
	{ 
		return _method; 
	} 
 
	//##ModelId=424BB6450102 
	void setMethod ( string & set ) 
	{ 
		_method = set; 
	} 
 
	//##ModelId=424BB6450111 
	string & getVersion () 
	{ 
		return _version; 
	} 
 
	//##ModelId=424BB6450112 
	void setVersion ( string & set ) 
	{ 
		set = _version; 
	} 
 
	//##ModelId=424BB6450121 
	long getExecute () 
	{ 
		return _execute; 
	} 
 
	//##ModelId=424BB6450122 
	void setExecute ( long set ) 
	{ 
		_execute = set; 
	} 
 
	//##ModelId=424BB6450130 
	long getStatus () 
	{ 
		return _status; 
	} 
 
	//##ModelId=424BB6450131 
	void setStatus ( long set ) 
	{ 
		_status = set; 
	} 
 
	//##ModelId=424BB6450140 
	long getAttributes () 
	{ 
		return _attributes; 
	} 
 
	//##ModelId=424BB6450141 
	void setAttributes ( long set ) 
	{ 
		_attributes = set; 
	} 
 
	//##ModelId=424BB645014F 
	long getProcessState () 
	{ 
		return _processState; 
	} 
 
	//##ModelId=424BB6450150 
	void setProcessState ( long set ) 
	{ 
		_processState = set; 
	} 
 
	//##ModelId=424BB645015F 
	string & getArgs () 
	{ 
		return _args; 
	} 
 
	//##ModelId=424BB6450160 
	void setArgs ( string & set ) 
	{ 
		_args = set; 
	} 
	 
	//##ModelId=424BB6450162 
	string & getHost () 
	{ 
		return _host; 
	} 
 
	//##ModelId=424BB645016F 
	void setHost ( string & set ) 
	{ 
		_host = set; 
	} 
 
	//##ModelId=424BB6450171 
	long getLength () 
	{ 
		return _length; 
	} 
 
	//##ModelId=424BB645017E 
	void setLength ( long set ) 
	{ 
		_length = set; 
	} 
 
 
	//##ModelId=424BB6450180 
	bool addHeaderValue ( LPTSTR param, string & value ) 
	{ 
		if ( !param == 0 || strlen(param) == 0 || value.empty() ) 
			return false; 
 
		// add value 
		_headers[ string(param)] = value; 
 
		return true; 
	} 
 
	//##ModelId=424BB645019E 
	bool addHeaderValue ( string & param, string & value ) 
	{ 
		if ( param.empty() == 0 || value.empty() ) 
			return false; 
 
		// add value 
		_headers[param] = value; 
 
		return true; 
	} 
 
	//##ModelId=424BB64501BD 
	string getHeaderValue ( string & param ) 
	{ 
		// if find value return it 
		itrStringMap itr = _headers.find(param); 
		if ( itr != _headers.end() ) 
			return (*itr).second; 
		else 
			return string(""); 
	} 
 
	//##ModelId=424BB64501CD 
	string getHeaderValue ( LPTSTR param ) 
	{ 
		// if find value return it 
		itrStringMap itr = _headers.find(string(param)); 
		if ( itr != _headers.end() ) 
			return (*itr).second; 
		else 
			return string(""); 
	} 
 
	// add status 
	//##ModelId=424BB64501DD 
	int addStatus( long status ) 
	{ 
		// save the status for this request 
		setStatus(status); 
 
		// store status in buffer 
		return HttpBuffer::addStatus( status ); 
	} 
}; 
 
 
 
///////////////////////////////////////////////////////////////////////////////////// 
// HttpRequestList 
// 
// Purpose:	list of http requests 
 
 
//##ModelId=424BB64501FB 
class HttpRequestList : 
	public deque 
{ 
public: 
 
	//##ModelId=424BB645021D 
	HttpRequestList () 
	{} 
 
	//##ModelId=424BB645021E 
	virtual ~HttpRequestList () 
	{ 
		clear(); 
	} 
}; 
 
//##ModelId=424BB645022A 
typedef deque::iterator	itrHttpRequest; 
 
 
 
 
#endif