this class implements a chunked request handler supporting the DataStream protocol
More...
Inherits RestHandler::AbstractRestStreamRequestHandler.
|
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...
|
|
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.
◆ 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
-
◆ recvDataImpl()
abstract nothing DataStreamRequestHandler::AbstractDataStreamRequestHandler::recvDataImpl |
( |
auto |
data | ) |
|
|
privatepure virtual |
reimplement this method in subclasses to receive decoded and deserialized data
- Parameters
-
data | the argument passed to this callback is the decoded and deserialized data in the message |
◆ recvImpl()
nothing DataStreamRequestHandler::AbstractDataStreamRequestHandler::recvImpl |
( |
hash |
v | ) |
|
◆ 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:
- doxygen/qlib/DataStreamRequestHandler.qm.dox.h