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::
handlers
{
14
class
HttpHandlerBase
;
15
}
16
17
namespace
server::
http
{
18
19
/// @brief Streaming HTTP response body writer
20
class
ResponseBodyStream
final
{
21
public
:
22
ResponseBodyStream(ResponseBodyStream&&) =
default
;
23
~ResponseBodyStream();
24
25
// Send a chunk of response data. It may NOT generate
26
// exactly one HTTP chunk per call to PushBodyChunk().
27
// May not be called after SetBody().
28
void
PushBodyChunk(std::string&& chunk, engine::Deadline deadline);
29
30
// Set full response body instead of sending chunks.
31
// May not be called after 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
void
SetStatusCode(
int
status_code);
41
42
void
SetStatusCode(
HttpStatus
status);
43
44
private
:
45
friend
class
server::
handlers
::
HttpHandlerBase
;
46
47
ResponseBodyStream(HttpResponse::Producer&& queue_producer, HttpResponse& http_response);
48
49
bool
headers_ended_{
false
};
50
bool
headers_end_sent_{
false
};
51
HttpResponse::Producer queue_producer_;
52
HttpResponse& http_response_;
53
};
54
55
}
// namespace server::http
56
57
USERVER_NAMESPACE_END
userver
server
http
http_response_body_stream.hpp
Generated on
for userver by
Doxygen
1.17.0