userver
C++ Async Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
http_response_body_stream.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/server/http/http_response_body_stream.hpp
4
/// @brief @copybrief server::http::ResponseBodyStream
5
6
#
include
<
string
>
7
8
#
include
<
userver
/
server
/
http
/
http_response
.
hpp
>
9
#
include
<
userver
/
server
/
request
/
response_base
.
hpp
>
10
11
USERVER_NAMESPACE_BEGIN
12
13
namespace
server::
http
{
14
15
/// @brief Streaming HTTP response body writer that is passed to
16
/// @ref server::handlers::HttpHandlerBase::HandleStreamRequest() overloads.
17
///
18
/// @see @ref scripts/docs/en/userver/http_server.md
19
class
ResponseBodyStream
final
{
20
public
:
21
/// Constructor that can be used in @ref server::handlers::HttpHandlerBase::HandleHttpRequest
22
explicit
ResponseBodyStream
(HttpResponse& http_response);
23
24
ResponseBodyStream(ResponseBodyStream&&) =
default
;
25
~ResponseBodyStream();
26
27
/// Send a chunk of response data; should not be called after SetBody().
28
/// It may NOT generate exactly one HTTP chunk per call to @ref PushBodyChunk().
29
void
PushBodyChunk
(std::string&& chunk, engine::Deadline deadline);
30
31
/// Set full response body instead of sending chunks; should not be called after @ref PushBodyChunk()
32
void
SetBody
(std::string&& body);
33
34
void
SetHeader(
const
std::string&,
const
std::string&);
35
36
void
SetHeader(std::string_view,
const
std::string&);
37
38
void
SetEndOfHeaders();
39
40
/// Set the HTTP status code; should not be called after @ref PushBodyChunk() as the result will be ignored.
41
void
SetStatusCode
(
int
status_code);
42
43
/// @overload
44
void
SetStatusCode
(
HttpStatus
status);
45
46
private
:
47
bool
headers_ended_{
false
};
48
bool
headers_end_sent_{
false
};
49
HttpResponse::Producer queue_producer_;
50
HttpResponse& http_response_;
51
};
52
53
}
// namespace server::http
54
55
USERVER_NAMESPACE_END
userver
server
http
http_response_body_stream.hpp
Generated on
for userver by
Doxygen
1.17.0