提交 e386fb73734ca5c8abeda0d79b2db66514f45ee9

作者 LJH 李佳桓
1 个父辈 bdbe8d50

add

正在显示 1 个修改的文件 包含 146 行增加0 行删除
  1 +/*
  2 + * Copyright 2007 Stephen Liu
  3 + * For license terms, see the file COPYING along with this library.
  4 + */
  5 +
  6 +#ifndef __sphttpmsg_hpp__
  7 +#define __sphttpmsg_hpp__
  8 +
  9 +class SP_ArrayList;
  10 +class SP_HttpRequest;
  11 +class SP_HttpResponse;
  12 +class SP_HttpMessage;
  13 +
  14 +class SP_HttpMsgParser {
  15 +public:
  16 + SP_HttpMsgParser();
  17 + ~SP_HttpMsgParser();
  18 +
  19 + void setIgnoreContent( int ignoreContent );
  20 + int isIgnoreContent() const;
  21 +
  22 + int append( const void * buffer, int len );
  23 +
  24 + // 0 : incomplete, 1 : complete
  25 + int isCompleted() const;
  26 +
  27 + SP_HttpRequest * getRequest() const;
  28 +
  29 + SP_HttpResponse * getResponse() const;
  30 +
  31 +private:
  32 + static int parseStartLine( SP_HttpMessage ** message,
  33 + const void * buffer, int len );
  34 + static int parseHeader( SP_HttpMessage * message,
  35 + const void * buffer, int len );
  36 + static int parseChunked( SP_HttpMessage * message,
  37 + const void * buffer, int len, int * status );
  38 + static int parseContent( SP_HttpMessage * message,
  39 + const void * buffer, int len, int * status );
  40 + static void postProcess( SP_HttpMessage * message );
  41 +
  42 + static int getLine( const void * buffer, int len, char * line, int size );
  43 +
  44 + SP_HttpMessage * mMessage;
  45 +
  46 + enum { eStartLine, eHeader, eContent, eCompleted };
  47 + int mStatus;
  48 +
  49 + int mIgnoreContent;
  50 +};
  51 +
  52 +class SP_HttpMessage {
  53 +public:
  54 + static const char * HEADER_CONTENT_LENGTH;
  55 + static const char * HEADER_CONTENT_TYPE;
  56 + static const char * HEADER_CONNECTION;
  57 + static const char * HEADER_PROXY_CONNECTION;
  58 + static const char * HEADER_TRANSFER_ENCODING;
  59 + static const char * HEADER_DATE;
  60 + static const char * HEADER_SERVER;
  61 +
  62 +public:
  63 + SP_HttpMessage( int type );
  64 + virtual ~SP_HttpMessage();
  65 +
  66 + enum { eRequest, eResponse };
  67 + int getType() const;
  68 +
  69 + void setVersion( const char * version );
  70 + const char * getVersion() const;
  71 +
  72 + void appendContent( const void * content, int length = 0, int maxLength = 0 );
  73 + void setContent( const void * content, int length = 0 );
  74 + void directSetContent( void * content, int length = 0 );
  75 + const void * getContent() const;
  76 + int getContentLength() const;
  77 +
  78 + void addHeader( const char * name, const char * value );
  79 + int removeHeader( const char * name );
  80 + int removeHeader( int index );
  81 + int getHeaderCount() const;
  82 + const char * getHeaderName( int index ) const;
  83 + const char * getHeaderValue( int index ) const;
  84 + const char * getHeaderValue( const char * name ) const;
  85 +
  86 + int isKeepAlive() const;
  87 +
  88 +protected:
  89 + const int mType;
  90 +
  91 + char mVersion[ 16 ];
  92 + void * mContent;
  93 + int mMaxLength, mContentLength;
  94 +
  95 + SP_ArrayList * mHeaderNameList, * mHeaderValueList;
  96 +};
  97 +
  98 +class SP_HttpRequest : public SP_HttpMessage {
  99 +public:
  100 + SP_HttpRequest();
  101 + virtual ~SP_HttpRequest();
  102 +
  103 + void setMethod( const char * method );
  104 + const char * getMethod() const;
  105 +
  106 + void setURI( const char * uri );
  107 + const char * getURI() const;
  108 +
  109 + void setURL( const char * url );
  110 + const char * getURL() const;
  111 +
  112 + void setClinetIP( const char * clientIP );
  113 + const char * getClientIP() const;
  114 +
  115 + void addParam( const char * name, const char * value );
  116 + int removeParam( const char * name );
  117 + int getParamCount() const;
  118 + const char * getParamName( int index ) const;
  119 + const char * getParamValue( int index ) const;
  120 + const char * getParamValue( const char * name ) const;
  121 +
  122 +private:
  123 + char mMethod[ 16 ], mClientIP[ 16 ];
  124 + char * mURI, * mURL;
  125 +
  126 + SP_ArrayList * mParamNameList, * mParamValueList;
  127 +};
  128 +
  129 +class SP_HttpResponse : public SP_HttpMessage {
  130 +public:
  131 + SP_HttpResponse();
  132 + virtual ~SP_HttpResponse();
  133 +
  134 + void setStatusCode( int statusCode );
  135 + int getStatusCode() const;
  136 +
  137 + void setReasonPhrase( const char * reasonPhrase );
  138 + const char * getReasonPhrase() const;
  139 +
  140 +private:
  141 + int mStatusCode;
  142 + char mReasonPhrase[ 128 ];
  143 +};
  144 +
  145 +#endif
  146 +
... ...
注册登录 后发表评论