Qore yaml Module 0.7.3
Loading...
Searching...
No Matches
DataStreamRequestHandler::AbstractDataStreamRequestHandler Class Referenceabstract

this class implements a chunked request handler supporting the DataStream protocol More...

#include <DataStreamRequestHandler.qm.dox.h>

Inherits RestHandler::AbstractRestStreamRequestHandler.

Public Member Methods

 constructor (hash< auto > cx, *hash< auto > ah)
 creates the chunked request handler according to the arguments
 
*hash< auto > getErrorResponse ()
 if an error occurred, then return a hash giving an error response, otherwise return nothing More...
 
hash< auto > getResponseHeaderMessageImpl ()
 returns the response header to the request More...
 
nothing recvImpl (hash v)
 calls the receive callback as returned by the DataStreamUtil module More...
 
auto sendImpl ()
 calls the send callback as returned by the DataStreamUtil module More...
 

Public Attributes

code recv_callback
 the receive callback as returned by the DataStreamUtil module
 
code scb
 the send callback as returned by the DataStreamUtil module
 
bool recv_done = False
 flag for when all data has been received
 
bool send_done = False
 flag for when all data has been sent
 
int err
 HTTP status code for error response sent.
 
*string send_error
 send error string received
 

Private Member Methods

nothing recvDataDone (*string err)
 this method is called when all data has been received
 
nothing recvData (auto data)
 This is the concrete method called when data is received; it calls recvDataImpl() in turn. More...
 
auto sendData ()
 This is the concrete method called when data is received; it calls recvDataImpl() in turn. More...
 
nothing recvDataDoneImpl (*string err)
 this method is called when all data has been received
 
abstract nothing recvDataImpl (auto data)
 reimplement this method in subclasses to receive decoded and deserialized data More...
 
abstract auto sendDataImpl ()
 reimplement this method in subclasses to support streamed data transfers More...
 

Detailed Description

this class implements a chunked request handler supporting the DataStream protocol

this class must be subclassed and then the recvDataImpl() and sendDataImpl() methods reimplemented to provide data receiving and sending support, respectively.

Member Function Documentation

◆ getErrorResponse()

*hash< auto > DataStreamRequestHandler::AbstractDataStreamRequestHandler::getErrorResponse ( )

if an error occurred, then return a hash giving an error response, otherwise return nothing

this method is meant to be called by getResponseHeaderMessageImpl()

◆ getResponseHeaderMessageImpl()

hash< auto > DataStreamRequestHandler::AbstractDataStreamRequestHandler::getResponseHeaderMessageImpl ( )

returns the response header to the request

Returns
a hash with the following keys:
  • "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
Note
this method is called after the message body has been received

◆ recvData()

nothing DataStreamRequestHandler::AbstractDataStreamRequestHandler::recvData ( auto  data)
private

This is the concrete method called when data is received; it calls recvDataImpl() in turn.

Parameters
datathe data received

◆ recvDataImpl()

abstract nothing DataStreamRequestHandler::AbstractDataStreamRequestHandler::recvDataImpl ( auto  data)
privatepure virtual

reimplement this method in subclasses to receive decoded and deserialized data

Parameters
datathe argument passed to this callback is the decoded and deserialized data in the message

◆ recvImpl()

nothing DataStreamRequestHandler::AbstractDataStreamRequestHandler::recvImpl ( hash  v)

calls the receive callback as returned by the DataStreamUtil module

The receive callback calls recvDataImpl() to deliver deserialized data

◆ sendData()

auto DataStreamRequestHandler::AbstractDataStreamRequestHandler::sendData ( )
private

This is the concrete method called when data is received; it calls recvDataImpl() in turn.

Returns
data the data to be sent over the link

◆ sendDataImpl()

abstract auto DataStreamRequestHandler::AbstractDataStreamRequestHandler::sendDataImpl ( )
privatepure virtual

reimplement this method in subclasses to support streamed data transfers

When this method returns no value, it signifies the end of the streamed data transfer

Returns
the data returned by this callback will be serialized to YAML and send via the DataStream protocol to the remote HTTP REST server in HTTP chunked format; when all data has been send then this callback should return nothing, which will close the chunked message and terminate the request

◆ sendImpl()

auto DataStreamRequestHandler::AbstractDataStreamRequestHandler::sendImpl ( )

calls the send callback as returned by the DataStreamUtil module

The send callback calls sendDataImpl() to get the data to serialize and encode and send as a response


The documentation for this class was generated from the following file: