diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2012-11-05 22:41:51 +0000 | 
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2012-11-05 22:41:51 +0000 | 
| commit | ec05778d5718a7912e506764d443a78d6a6179e3 (patch) | |
| tree | 78a9a01532180030c095acefc45763f07c14edb8 /src/stable/protocolhttp.h | |
| parent | b20414ac1fe80a71a90601f4cd1767fa7014a9ba (diff) | |
| download | libbu++-ec05778d5718a7912e506764d443a78d6a6179e3.tar.gz libbu++-ec05778d5718a7912e506764d443a78d6a6179e3.tar.bz2 libbu++-ec05778d5718a7912e506764d443a78d6a6179e3.tar.xz libbu++-ec05778d5718a7912e506764d443a78d6a6179e3.zip  | |
Converted tabs to spaces with tabconv.
Diffstat (limited to '')
| -rw-r--r-- | src/stable/protocolhttp.h | 146 | 
1 files changed, 73 insertions, 73 deletions
diff --git a/src/stable/protocolhttp.h b/src/stable/protocolhttp.h index 87dc49b..51ca58c 100644 --- a/src/stable/protocolhttp.h +++ b/src/stable/protocolhttp.h  | |||
| @@ -18,89 +18,89 @@ | |||
| 18 | 18 | ||
| 19 | namespace Bu | 19 | namespace Bu | 
| 20 | { | 20 | { | 
| 21 | /** | 21 | /** | 
| 22 | * An HTTP Protocol handler. Yes, I know that HTTP stands for Hyper Text | 22 | * An HTTP Protocol handler. Yes, I know that HTTP stands for Hyper Text | 
| 23 | * Transfer Protocol, and that the Protocol part is redundant, but in this | 23 | * Transfer Protocol, and that the Protocol part is redundant, but in this | 
| 24 | * case the word Protocol is refering to the Libbu++ construct Bu::Protocol, | 24 | * case the word Protocol is refering to the Libbu++ construct Bu::Protocol, | 
| 25 | * and not a means of encoding conversations. Anyway, this class represents | 25 | * and not a means of encoding conversations. Anyway, this class represents | 
| 26 | * a general HTTP server processor. Every time a request comes in it calls | 26 | * a general HTTP server processor. Every time a request comes in it calls | 
| 27 | * the onRequest function in a subclass with the method and URI that were | 27 | * the onRequest function in a subclass with the method and URI that were | 
| 28 | * requested. The sub-class can then do whatever it needs to to send back | 28 | * requested. The sub-class can then do whatever it needs to to send back | 
| 29 | * a response. | 29 | * a response. | 
| 30 | *@ingroup Serving | 30 | *@ingroup Serving | 
| 31 | */ | 31 | */ | 
| 32 | class ProtocolHttp : public Protocol | 32 | class ProtocolHttp : public Protocol | 
| 33 | { | 33 | { | 
| 34 | public: /* Types */ | 34 | public: /* Types */ | 
| 35 | typedef Bu::List<Bu::String> TokenList; | 35 | typedef Bu::List<Bu::String> TokenList; | 
| 36 | 36 | ||
| 37 | public: /* Interface */ | 37 | public: /* Interface */ | 
| 38 | ProtocolHttp(); | 38 | ProtocolHttp(); | 
| 39 | virtual ~ProtocolHttp(); | 39 | virtual ~ProtocolHttp(); | 
| 40 | 40 | ||
| 41 | virtual void onNewConnection( Bu::Client *pClient ); | 41 | virtual void onNewConnection( Bu::Client *pClient ); | 
| 42 | virtual void onNewData( Bu::Client *pClient ); | 42 | virtual void onNewData( Bu::Client *pClient ); | 
| 43 | 43 | ||
| 44 | virtual void onRequest( | 44 | virtual void onRequest( | 
| 45 | const Bu::String &sMethod, const Bu::String &sPath )=0; | 45 | const Bu::String &sMethod, const Bu::String &sPath )=0; | 
| 46 | 46 | ||
| 47 | class Response | 47 | class Response | 
| 48 | { | 48 | { | 
| 49 | friend class Bu::ProtocolHttp; | 49 | friend class Bu::ProtocolHttp; | 
| 50 | public: | 50 | public: | 
| 51 | Response( int iCode ); | 51 | Response( int iCode ); | 
| 52 | Response( int iCode, const Bu::String &sReason ); | 52 | Response( int iCode, const Bu::String &sReason ); | 
| 53 | virtual ~Response(); | 53 | virtual ~Response(); | 
| 54 | 54 | ||
| 55 | void setHeader( const Bu::String &sKey, const Bu::String &sVal ); | 55 | void setHeader( const Bu::String &sKey, const Bu::String &sVal ); | 
| 56 | void setContent( const Bu::String &sCont ); | 56 | void setContent( const Bu::String &sCont ); | 
| 57 | 57 | ||
| 58 | private: | 58 | private: | 
| 59 | int iCode; | 59 | int iCode; | 
| 60 | Bu::String sReason; | 60 | Bu::String sReason; | 
| 61 | typedef Bu::Hash<Bu::String,Bu::String> StringHash; | 61 | typedef Bu::Hash<Bu::String,Bu::String> StringHash; | 
| 62 | StringHash hHeaders; | 62 | StringHash hHeaders; | 
| 63 | Bu::String sContent; | 63 | Bu::String sContent; | 
| 64 | }; | 64 | }; | 
| 65 | 65 | ||
| 66 | void sendResponse( const Response &rRes ); | 66 | void sendResponse( const Response &rRes ); | 
| 67 | 67 | ||
| 68 | private: | 68 | private: | 
| 69 | enum TokenType | 69 | enum TokenType | 
| 70 | { | 70 | { | 
| 71 | ttOutOfData, | 71 | ttOutOfData, | 
| 72 | ttString, | 72 | ttString, | 
| 73 | ttNewline, | 73 | ttNewline, | 
| 74 | ttDoubleNewline, | 74 | ttDoubleNewline, | 
| 75 | ttSeperator | 75 | ttSeperator | 
| 76 | }; | 76 | }; | 
| 77 | /** | 77 | /** | 
| 78 | * Read an HTTP line, this is up to the first CRLF that isn't followed | 78 | * Read an HTTP line, this is up to the first CRLF that isn't followed | 
| 79 | * by a continuation character, converting it to one line as it reads. | 79 | * by a continuation character, converting it to one line as it reads. | 
| 80 | *@param line All data read will be appended to line, even if no | 80 | *@param line All data read will be appended to line, even if no | 
| 81 | * end-of-line is read. | 81 | * end-of-line is read. | 
| 82 | *@returns True if an end-of-line is read and the line should be | 82 | *@returns True if an end-of-line is read and the line should be | 
| 83 | * processed, false if the end-of-line has not been reached, and more | 83 | * processed, false if the end-of-line has not been reached, and more | 
| 84 | * data needs to be read before this operation can continue. | 84 | * data needs to be read before this operation can continue. | 
| 85 | */ | 85 | */ | 
| 86 | TokenType getToken( Bu::String &line ); | 86 | TokenType getToken( Bu::String &line ); | 
| 87 | bool isWS( char buf ); | 87 | bool isWS( char buf ); | 
| 88 | bool isSeperator( char buf ); | 88 | bool isSeperator( char buf ); | 
| 89 | 89 | ||
| 90 | void earlyResponse(); | 90 | void earlyResponse(); | 
| 91 | void lateResponse(); | 91 | void lateResponse(); | 
| 92 | 92 | ||
| 93 | private: /* state */ | 93 | private: /* state */ | 
| 94 | Bu::Client *pClient; | 94 | Bu::Client *pClient; | 
| 95 | TokenList lTokens; | 95 | TokenList lTokens; | 
| 96 | 96 | ||
| 97 | int iState; | 97 | int iState; | 
| 98 | 98 | ||
| 99 | Bu::String sMethod; | 99 | Bu::String sMethod; | 
| 100 | Bu::String sPath; | 100 | Bu::String sPath; | 
| 101 | int iMajor; | 101 | int iMajor; | 
| 102 | int iMinor; | 102 | int iMinor; | 
| 103 | }; | 103 | }; | 
| 104 | } | 104 | } | 
| 105 | 105 | ||
| 106 | #endif | 106 | #endif | 
