![]()  | 
  
    Qore HttpServerUtil Module Reference
    1.0.12
    
   | 
 
abstract class for streaming HTTP chunked requests/responses More...
Public Member Methods | |
| constructor (HttpListenerInterface listener, AbstractHttpRequestHandler handler, Socket s, hash< auto > cx, hash< auto > hdr, auto body) | |
| creates the object with the given attributes  More... | |
| hash< HttpHandlerResponseInfo > | handleRequest () | 
| handles the request  | |
Private Member Methods | |
| hash< HttpHandlerResponseInfo > | getResponseHeaderMessage () | 
| this method returns the response message description hash by calling getResponseHeaderMessageImpl()  More... | |
| hash< HttpResponseInfo > | getResponseHeaderMessageImpl () | 
| this method should return the response message description hash  More... | |
| logChunk (bool send, int size) | |
| this method can be overridden in base classes to log each HTTP chunk sent  More... | |
| nothing | recv (hash< auto > v) | 
| this is the primary callback for receiving chunked data; data will be logged, and then recvImpl() is called  More... | |
| nothing | recvImpl (hash< auto > v) | 
| callback method for receiving chunked data; the default implementation in this base class does nothing  More... | |
| auto | send () | 
| this is the primary callback for sending chunked responses  More... | |
| auto | sendImpl () | 
| callback method for sending chunked data  More... | |
| hash< HttpHandlerResponseInfo > | sendResponse () | 
| called to either create the response hash or send a chunked response directly  More... | |
Private Attributes | |
| auto | body | 
| any message body given in a non-chunked request; could already be deserialized  | |
| hash< auto > | cx | 
| the call context variable  | |
| AbstractHttpRequestHandler | handler | 
| the request handler for the request  | |
| hash< auto > | hdr | 
| a hash of request headers  | |
| HttpListenerInterface | listener | 
| an HttpListenerInterface object for the listener serving the request for logging purposes  | |
| Socket | s | 
| the Socket object for the response  | |
| timeout | timeout_ms = HttpServer::DefaultTimeout | 
| send and receive timeout  | |
abstract class for streaming HTTP chunked requests/responses
This class is the base class for handling HTTP stream requests; i.e. with chunked data
The calling order is as follows:
      
  | 
  inline | 
creates the object with the given attributes
| listener | an HttpListenerInterface object for the listener serving the request for logging purposes | 
| handler | the handler serving the request | 
| s | the Socket for serving the request | 
| cx | a call context hash | 
| hdr | incoming header hash; all keys will be converted to lower-case, additionally the following keys will be present:
  | 
| body | any message body in the request already received from the incoming socket | 
      
  | 
  private | 
this method returns the response message description hash by calling getResponseHeaderMessageImpl()
"code": the HTTP return code (see HttpServer::HttpCodes)"body": the message body to return in the response; if this key is returned, then the reply is sent immediately; a chunked reply is not made, and send() and sendImpl() are not called"close": (optional) set this key to True if the connection should be unconditionally closed when the handler returns"hdr": (optional) set this key to a hash of extra header information to be returned with the response
      
  | 
  private | 
this method should return the response message description hash
The default implementation in this class is to return a 501 Not Implemented response; override in subclasses to return a custom response. Omit the "body" key to ensure that a chunked response is sent and the send() and sendImpl() callbacks are called.
"code": the HTTP return code (see HttpServer::HttpCodes)"body": the message body to return in the response; if this key is returned, then the reply is sent immediately; a chunked reply is not made, and send() and sendImpl() are not called"close": (optional) set this key to True if the connection should be unconditionally closed when the handler returns"hdr": (optional) set this key to a hash of extra header information to be returned with the response
      
  | 
  private | 
this method can be overridden in base classes to log each HTTP chunk sent
By default this method does nothing
      
  | 
  private | 
this is the primary callback for receiving chunked data; data will be logged, and then recvImpl() is called
content decoding is not possible with chunked data because only the entire message can be decoded
      
  | 
  private | 
callback method for receiving chunked data; the default implementation in this base class does nothing
| v | the first time this method is called with a hash of the message headers in the "hdr" key, and then with any message body in the "data"; if a chunked HTTP message is received, then this method is called once for each chunk; when the message has been received, then this method is called with a hash representing any trailer data received in a chunked transfer or NOTHING if the data was received in a normal message body or if there was no trailer data in a chunked transfer. The argument to this callback is always a hash; data calls have the following keys:
 
  | 
      
  | 
  private | 
this is the primary callback for sending chunked responses
first sendImpl() is called to get the raw data, and then any chunked data is encoded by this method if required
      
  | 
  private | 
callback method for sending chunked data
The default implementation in this base class does nothing and returns nothing
      
  | 
  private | 
called to either create the response hash or send a chunked response directly
This method calls getResponseHeaderMessageImpl() to get the response code, headers and optionally a response message body.
If a "Transfer-Encoding: chunked" header is included, then the response is sent chunked using the send() callback; in this case the "reply_sent" key in the response is set to True.
Otherwise, any message body is immediately encoded (if accepted by the requestor).