summaryrefslogtreecommitdiff
path: root/boost/beast/http/impl/serializer.ipp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/beast/http/impl/serializer.ipp')
-rw-r--r--boost/beast/http/impl/serializer.ipp88
1 files changed, 56 insertions, 32 deletions
diff --git a/boost/beast/http/impl/serializer.ipp b/boost/beast/http/impl/serializer.ipp
index 11cf857845..b37856567f 100644
--- a/boost/beast/http/impl/serializer.ipp
+++ b/boost/beast/http/impl/serializer.ipp
@@ -25,18 +25,18 @@ template<
bool isRequest, class Body, class Fields>
void
serializer<isRequest, Body, Fields>::
-frdinit(std::true_type)
+fwrinit(std::true_type)
{
- frd_.emplace(m_, m_.version(), m_.method());
+ fwr_.emplace(m_, m_.version(), m_.method());
}
template<
bool isRequest, class Body, class Fields>
void
serializer<isRequest, Body, Fields>::
-frdinit(std::false_type)
+fwrinit(std::false_type)
{
- frd_.emplace(m_, m_.version(), m_.result_int());
+ fwr_.emplace(m_, m_.version(), m_.result_int());
}
template<
@@ -57,9 +57,31 @@ do_visit(error_code& ec, Visit& visit)
template<
bool isRequest, class Body, class Fields>
serializer<isRequest, Body, Fields>::
-serializer(value_type& m)
+serializer(value_type& m, std::true_type)
+ : m_(m)
+ , wr_(m_)
+{
+#ifndef BOOST_BEAST_ALLOW_DEPRECATED
+ // Deprecated BodyWriter Concept (v1.66)
+ static_assert(sizeof(Body) == 0,
+ BOOST_BEAST_DEPRECATION_STRING);
+#endif
+}
+
+template<
+ bool isRequest, class Body, class Fields>
+serializer<isRequest, Body, Fields>::
+serializer(value_type& m, std::false_type)
: m_(m)
- , rd_(m_)
+ , wr_(m_.base(), m_.body())
+{
+}
+
+template<
+ bool isRequest, class Body, class Fields>
+serializer<isRequest, Body, Fields>::
+serializer(value_type& m)
+ : serializer(m, detail::has_deprecated_body_writer<Body>{})
{
}
@@ -75,22 +97,22 @@ next(error_code& ec, Visit&& visit)
{
case do_construct:
{
- frdinit(std::integral_constant<bool,
+ fwrinit(std::integral_constant<bool,
isRequest>{});
if(m_.chunked())
goto go_init_c;
s_ = do_init;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
}
case do_init:
{
- rd_.init(ec);
+ wr_.init(ec);
if(ec)
return;
if(split_)
goto go_header_only;
- auto result = rd_.get(ec);
+ auto result = wr_.get(ec);
if(ec == error::need_more)
goto go_header_only;
if(ec)
@@ -100,10 +122,10 @@ next(error_code& ec, Visit&& visit)
more_ = result->second;
v_.template emplace<2>(
boost::in_place_init,
- frd_->get(),
+ fwr_->get(),
result->first);
s_ = do_header;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
}
case do_header:
@@ -111,20 +133,20 @@ next(error_code& ec, Visit&& visit)
break;
go_header_only:
- v_.template emplace<1>(frd_->get());
+ v_.template emplace<1>(fwr_->get());
s_ = do_header_only;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
case do_header_only:
do_visit<1>(ec, visit);
break;
case do_body:
s_ = do_body + 1;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
case do_body + 1:
{
- auto result = rd_.get(ec);
+ auto result = wr_.get(ec);
if(ec)
return;
if(! result)
@@ -132,7 +154,7 @@ next(error_code& ec, Visit&& visit)
more_ = result->second;
v_.template emplace<3>(result->first);
s_ = do_body + 2;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
}
case do_body + 2:
@@ -143,15 +165,15 @@ next(error_code& ec, Visit&& visit)
go_init_c:
s_ = do_init_c;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
case do_init_c:
{
- rd_.init(ec);
+ wr_.init(ec);
if(ec)
return;
if(split_)
goto go_header_only_c;
- auto result = rd_.get(ec);
+ auto result = wr_.get(ec);
if(ec == error::need_more)
goto go_header_only_c;
if(ec)
@@ -164,7 +186,7 @@ next(error_code& ec, Visit&& visit)
// do it all in one buffer
v_.template emplace<7>(
boost::in_place_init,
- frd_->get(),
+ fwr_->get(),
buffer_size(result->first),
boost::asio::const_buffer{nullptr, 0},
chunk_crlf{},
@@ -177,14 +199,14 @@ next(error_code& ec, Visit&& visit)
}
v_.template emplace<4>(
boost::in_place_init,
- frd_->get(),
+ fwr_->get(),
buffer_size(result->first),
boost::asio::const_buffer{nullptr, 0},
chunk_crlf{},
result->first,
chunk_crlf{});
s_ = do_header_c;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
}
case do_header_c:
@@ -192,19 +214,21 @@ next(error_code& ec, Visit&& visit)
break;
go_header_only_c:
- v_.template emplace<1>(frd_->get());
+ v_.template emplace<1>(fwr_->get());
s_ = do_header_only_c;
+ BOOST_FALLTHROUGH;
+
case do_header_only_c:
do_visit<1>(ec, visit);
break;
case do_body_c:
s_ = do_body_c + 1;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
case do_body_c + 1:
{
- auto result = rd_.get(ec);
+ auto result = wr_.get(ec);
if(ec)
return;
if(! result)
@@ -233,7 +257,7 @@ next(error_code& ec, Visit&& visit)
result->first,
chunk_crlf{});
s_ = do_body_c + 2;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
}
case do_body_c + 2:
@@ -242,14 +266,14 @@ next(error_code& ec, Visit&& visit)
go_body_final_c:
s_ = do_body_final_c;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
case do_body_final_c:
do_visit<6>(ec, visit);
break;
go_all_c:
s_ = do_all_c;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
case do_all_c:
do_visit<7>(ec, visit);
break;
@@ -262,7 +286,7 @@ next(error_code& ec, Visit&& visit)
boost::asio::const_buffer{nullptr, 0},
chunk_crlf{});
s_ = do_final_c + 1;
- BOOST_BEAST_FALLTHROUGH;
+ BOOST_FALLTHROUGH;
case do_final_c + 1:
do_visit<8>(ec, visit);
@@ -309,7 +333,7 @@ consume(std::size_t n)
v_.template get<1>().consume(n);
if(buffer_size(v_.template get<1>()) > 0)
break;
- frd_ = boost::none;
+ fwr_ = boost::none;
header_done_ = true;
if(! split_)
goto go_complete;
@@ -353,7 +377,7 @@ consume(std::size_t n)
v_.template get<1>().consume(n);
if(buffer_size(v_.template get<1>()) > 0)
break;
- frd_ = boost::none;
+ fwr_ = boost::none;
header_done_ = true;
if(! split_)
{