FARGOS/VISTA Object Management Environment Core
..
|
Scan HTTP and parse stream for HTTP requests/responses. More...
#include <read_file.hpp>
Public Types | |
enum | ParseState { READ_RESPONSE =1, READ_REQUEST, READ_HEADER_LINE, READ_CONTENT_BODY } |
Public Member Functions | |
Parse_And_Process_HTTP_Stream (size_t maxDocSize=1024 *128, ParseState initialState=READ_RESPONSE) | |
virtual | ~Parse_And_Process_HTTP_Stream () |
const char * | findHeaderAttribute (const char *headerElement) const |
virtual int | processHTTPresponse (unsigned char *line, size_t lineLen) |
User-exit for HTTP response line. More... | |
virtual int | processHTTPrequest (unsigned char *line, size_t lineLen) |
User-exit for HTTP request line. More... | |
virtual int | processHTTPheader (unsigned char *line, size_t lineLen) |
User exit for HTTP header line. More... | |
virtual int_fast32_t | processBlock (unsigned char *blockStart, size_t blockLen) VIRTUAL_OVERRIDE |
User-exit to process block of raw data. More... | |
int | processDocument (unsigned char *docStart, size_t docLen) VIRTUAL_OVERRIDE |
User-exit to process extracted document. More... | |
![]() | |
Extract_And_Process_Document_Stream (const char *docStart, const char *endTag, size_t maxDocSize=1024 *128) | |
virtual | ~Extract_And_Process_Document_Stream () |
int | scanAndProcessBuffer (const unsigned char *block, size_t blockLen) |
int | scanAndProcessBuffer (File_Buffer *bfrState) |
int | addIOblockThenProcess (SharedBufferAllocRecord *rec, IO_Processor *controller) |
Specialized interface to add incoming block from BufferRegion maintained by an IO_Processor. Block content is appended and then returned before any processing of the content is attempted. More... | |
Public Attributes | |
char | httpVersion [16] |
char | statusCode [8] |
char | responseReason [48] |
char | httpRequest [16] |
char | requestURL [1024] |
int32_t | contentLengthWanted |
std::map< std::string, std::string > | headerAttributes |
Protected Attributes | |
ParseState | parseState |
ParseState | restartParseState |
![]() | |
enum Extract_And_Process_Document_Stream:: { ... } | scanState |
enum Extract_And_Process_Document_Stream:: { ... } | restartScanState |
unsigned char | documentStartPrefix [64] |
unsigned char | documentEndTag [64] |
File_Buffer * | pendingContent |
ssize_t | neededBlockLen |
size_t | documentStartLen |
size_t | documentEndLen |
Additional Inherited Members | |
![]() | |
enum | { FIND_NOTHING =0, FIND_DOC_START =1, FIND_END_TAG =2, FIND_BLOCK_LENGTH =3 } |
![]() | |
int | scanForDocument () |
Scan HTTP and parse stream for HTTP requests/responses.
|
inlineexplicit |
References contentLengthWanted, httpVersion, parseState, responseReason, restartParseState, and statusCode.
|
inlinevirtual |
|
inline |
References headerAttributes.
Referenced by HTTP_SessionRecord::handleHTTPrequest().
|
inlinevirtual |
User-exit to process block of raw data.
Will be invoked if processDocument() returns a value greater than 0.
Reimplemented from Extract_And_Process_Document_Stream.
Reimplemented in HTTP_SessionRecord.
|
inlinevirtual |
User-exit to process extracted document.
0 | indicates no block of raw data is required. |
-1 | indicates some error. |
Implements Extract_And_Process_Document_Stream.
References contentLengthWanted, io(), LOG_COMPONENT_CERR, LOG_ENDLINE, parseState, processHTTPheader(), processHTTPrequest(), processHTTPresponse(), READ_CONTENT_BODY, READ_HEADER_LINE, READ_REQUEST, READ_RESPONSE, and restartParseState.
|
inlinevirtual |
User exit for HTTP header line.
Default implementation saves lines as key/value pairs in a map. Content-Length automatically recognized to retrieve block of subsequent data.
Reimplemented in HTTP_SessionRecord.
References AS_TEXT_BUFFER, contentLengthWanted, headerAttributes, io(), LOG_COMPONENT_CERR, LOG_ENDLINE, and text2uint32().
Referenced by processDocument(), and HTTP_SessionRecord::processHTTPheader().
|
inlinevirtual |
User-exit for HTTP request line.
Default implementation parses HTTP request line, which is expected to appear like: "GET / HTTP/1.1"
References AS_TEXT_BUFFER, headerAttributes, httpRequest, httpVersion, io(), LOG_COMPONENT_CERR, LOG_ENDLINE, and requestURL.
Referenced by processDocument().
|
inlinevirtual |
User-exit for HTTP response line.
Default implementation parses response line, which is expected to appear like "HTTP/1.1 200 OK"
References AS_TEXT_BUFFER, headerAttributes, httpVersion, io(), LOG_COMPONENT_CERR, LOG_ENDLINE, responseReason, and statusCode.
Referenced by processDocument().
int32_t Parse_And_Process_HTTP_Stream::contentLengthWanted |
std::map<std::string,std::string> Parse_And_Process_HTTP_Stream::headerAttributes |
Referenced by findHeaderAttribute(), processHTTPheader(), processHTTPrequest(), and processHTTPresponse().
char Parse_And_Process_HTTP_Stream::httpRequest[16] |
Referenced by HTTP_SessionRecord::handleHTTPrequest(), and processHTTPrequest().
char Parse_And_Process_HTTP_Stream::httpVersion[16] |
|
protected |
Referenced by Parse_And_Process_HTTP_Stream(), and processDocument().
char Parse_And_Process_HTTP_Stream::requestURL[1024] |
Referenced by HTTP_SessionRecord::handleHTTPrequest(), and processHTTPrequest().
char Parse_And_Process_HTTP_Stream::responseReason[48] |
Referenced by Parse_And_Process_HTTP_Stream(), and processHTTPresponse().
|
protected |
Referenced by Parse_And_Process_HTTP_Stream(), and processDocument().
char Parse_And_Process_HTTP_Stream::statusCode[8] |
Referenced by Parse_And_Process_HTTP_Stream(), and processHTTPresponse().
![]() | Generated: Fri Jul 31 2020 18:19:16
Support Information |