mirror of
https://github.com/boostorg/beast.git
synced 2025-08-02 14:24:31 +02:00
serializer::reader_impl is deprecated:
fix #930 * The function serializer::reader_impl is deprecated and will be removed in a subsequent version. * Some private symbols used in the implementation were also renamed to reflect correct terminology. Actions Required: * Call serializer::writer_impl instead of reader_impl
This commit is contained in:
@@ -2,6 +2,14 @@ Version 150:
|
|||||||
|
|
||||||
* handler_ptr tests
|
* handler_ptr tests
|
||||||
|
|
||||||
|
API Changes:
|
||||||
|
|
||||||
|
* serializer::reader_impl is deprecated
|
||||||
|
|
||||||
|
Actions Required:
|
||||||
|
|
||||||
|
* Call serializer::writer_impl instead of reader_impl
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
Version 149:
|
Version 149:
|
||||||
|
@@ -54,4 +54,7 @@
|
|||||||
# define BOOST_BEAST_FALLTHROUGH __attribute__((fallthrough))
|
# define BOOST_BEAST_FALLTHROUGH __attribute__((fallthrough))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_BEAST_DEPRECATION_STRING \
|
||||||
|
"This is a deprecated interface, #define BOOST_BEAST_ALLOW_DEPRECATED to allow it"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -415,11 +415,11 @@ operator()()
|
|||||||
return detail::async_write_some_impl(
|
return detail::async_write_some_impl(
|
||||||
sock_, sr_, std::move(*this));
|
sock_, sr_, std::move(*this));
|
||||||
}
|
}
|
||||||
auto& r = sr_.reader_impl();
|
auto& w = sr_.writer_impl();
|
||||||
boost::winapi::DWORD_ const nNumberOfBytesToWrite =
|
boost::winapi::DWORD_ const nNumberOfBytesToWrite =
|
||||||
static_cast<boost::winapi::DWORD_>(
|
static_cast<boost::winapi::DWORD_>(
|
||||||
(std::min<std::uint64_t>)(
|
(std::min<std::uint64_t>)(
|
||||||
(std::min<std::uint64_t>)(r.body_.last_ - r.pos_, sr_.limit()),
|
(std::min<std::uint64_t>)(w.body_.last_ - w.pos_, sr_.limit()),
|
||||||
(std::numeric_limits<boost::winapi::DWORD_>::max)()));
|
(std::numeric_limits<boost::winapi::DWORD_>::max)()));
|
||||||
boost::asio::windows::overlapped_ptr overlapped{
|
boost::asio::windows::overlapped_ptr overlapped{
|
||||||
sock_.get_executor().context(), std::move(*this)};
|
sock_.get_executor().context(), std::move(*this)};
|
||||||
@@ -427,8 +427,8 @@ operator()()
|
|||||||
// the handler since it is now moved-from. We can still
|
// the handler since it is now moved-from. We can still
|
||||||
// access simple things like references and built-in types.
|
// access simple things like references and built-in types.
|
||||||
auto& ov = *overlapped.get();
|
auto& ov = *overlapped.get();
|
||||||
ov.Offset = lowPart(r.pos_);
|
ov.Offset = lowPart(w.pos_);
|
||||||
ov.OffsetHigh = highPart(r.pos_);
|
ov.OffsetHigh = highPart(w.pos_);
|
||||||
auto const bSuccess = ::TransmitFile(
|
auto const bSuccess = ::TransmitFile(
|
||||||
sock_.native_handle(),
|
sock_.native_handle(),
|
||||||
sr_.get().body().file_.native_handle(),
|
sr_.get().body().file_.native_handle(),
|
||||||
@@ -468,10 +468,10 @@ operator()(
|
|||||||
header_ = false;
|
header_ = false;
|
||||||
return (*this)();
|
return (*this)();
|
||||||
}
|
}
|
||||||
auto& r = sr_.reader_impl();
|
auto& w = sr_.writer_impl();
|
||||||
r.pos_ += bytes_transferred;
|
w.pos_ += bytes_transferred;
|
||||||
BOOST_ASSERT(r.pos_ <= r.body_.last_);
|
BOOST_ASSERT(w.pos_ <= w.body_.last_);
|
||||||
if(r.pos_ >= r.body_.last_)
|
if(w.pos_ >= w.body_.last_)
|
||||||
{
|
{
|
||||||
sr_.next(ec, null_lambda{});
|
sr_.next(ec, null_lambda{});
|
||||||
BOOST_ASSERT(! ec);
|
BOOST_ASSERT(! ec);
|
||||||
@@ -512,18 +512,18 @@ write_some(
|
|||||||
return bytes_transferred;
|
return bytes_transferred;
|
||||||
return bytes_transferred;
|
return bytes_transferred;
|
||||||
}
|
}
|
||||||
auto& r = sr.reader_impl();
|
auto& w = sr.writer_impl();
|
||||||
r.body_.file_.seek(r.pos_, ec);
|
w.body_.file_.seek(w.pos_, ec);
|
||||||
if(ec)
|
if(ec)
|
||||||
return 0;
|
return 0;
|
||||||
boost::winapi::DWORD_ const nNumberOfBytesToWrite =
|
boost::winapi::DWORD_ const nNumberOfBytesToWrite =
|
||||||
static_cast<boost::winapi::DWORD_>(
|
static_cast<boost::winapi::DWORD_>(
|
||||||
(std::min<std::uint64_t>)(
|
(std::min<std::uint64_t>)(
|
||||||
(std::min<std::uint64_t>)(r.body_.last_ - r.pos_, sr.limit()),
|
(std::min<std::uint64_t>)(w.body_.last_ - w.pos_, sr.limit()),
|
||||||
(std::numeric_limits<boost::winapi::DWORD_>::max)()));
|
(std::numeric_limits<boost::winapi::DWORD_>::max)()));
|
||||||
auto const bSuccess = ::TransmitFile(
|
auto const bSuccess = ::TransmitFile(
|
||||||
sock.native_handle(),
|
sock.native_handle(),
|
||||||
r.body_.file_.native_handle(),
|
w.body_.file_.native_handle(),
|
||||||
nNumberOfBytesToWrite,
|
nNumberOfBytesToWrite,
|
||||||
0,
|
0,
|
||||||
nullptr,
|
nullptr,
|
||||||
@@ -536,9 +536,9 @@ write_some(
|
|||||||
system_category());
|
system_category());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
r.pos_ += nNumberOfBytesToWrite;
|
w.pos_ += nNumberOfBytesToWrite;
|
||||||
BOOST_ASSERT(r.pos_ <= r.body_.last_);
|
BOOST_ASSERT(w.pos_ <= w.body_.last_);
|
||||||
if(r.pos_ < r.body_.last_)
|
if(w.pos_ < w.body_.last_)
|
||||||
{
|
{
|
||||||
ec.assign(0, ec.category());
|
ec.assign(0, ec.category());
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,7 @@ namespace http {
|
|||||||
template<bool isRequest, class Body, class Allocator>
|
template<bool isRequest, class Body, class Allocator>
|
||||||
parser<isRequest, Body, Allocator>::
|
parser<isRequest, Body, Allocator>::
|
||||||
parser()
|
parser()
|
||||||
: wr_(m_)
|
: rd_(m_)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ parser<isRequest, Body, Allocator>::
|
|||||||
parser(Arg1&& arg1, ArgN&&... argn)
|
parser(Arg1&& arg1, ArgN&&... argn)
|
||||||
: m_(std::forward<Arg1>(arg1),
|
: m_(std::forward<Arg1>(arg1),
|
||||||
std::forward<ArgN>(argn)...)
|
std::forward<ArgN>(argn)...)
|
||||||
, wr_(m_)
|
, rd_(m_)
|
||||||
{
|
{
|
||||||
m_.clear();
|
m_.clear();
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ parser(parser<isRequest, OtherBody, Allocator>&& other,
|
|||||||
Args&&... args)
|
Args&&... args)
|
||||||
: base_type(std::move(other))
|
: base_type(std::move(other))
|
||||||
, m_(other.release(), std::forward<Args>(args)...)
|
, m_(other.release(), std::forward<Args>(args)...)
|
||||||
, wr_(m_)
|
, rd_(m_)
|
||||||
{
|
{
|
||||||
if(other.rd_inited_)
|
if(other.rd_inited_)
|
||||||
BOOST_THROW_EXCEPTION(std::invalid_argument{
|
BOOST_THROW_EXCEPTION(std::invalid_argument{
|
||||||
|
@@ -25,18 +25,18 @@ template<
|
|||||||
bool isRequest, class Body, class Fields>
|
bool isRequest, class Body, class Fields>
|
||||||
void
|
void
|
||||||
serializer<isRequest, Body, Fields>::
|
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<
|
template<
|
||||||
bool isRequest, class Body, class Fields>
|
bool isRequest, class Body, class Fields>
|
||||||
void
|
void
|
||||||
serializer<isRequest, Body, Fields>::
|
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<
|
template<
|
||||||
@@ -59,7 +59,7 @@ template<
|
|||||||
serializer<isRequest, Body, Fields>::
|
serializer<isRequest, Body, Fields>::
|
||||||
serializer(value_type& m)
|
serializer(value_type& m)
|
||||||
: m_(m)
|
: m_(m)
|
||||||
, rd_(m_)
|
, wr_(m_)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ next(error_code& ec, Visit&& visit)
|
|||||||
{
|
{
|
||||||
case do_construct:
|
case do_construct:
|
||||||
{
|
{
|
||||||
frdinit(std::integral_constant<bool,
|
fwrinit(std::integral_constant<bool,
|
||||||
isRequest>{});
|
isRequest>{});
|
||||||
if(m_.chunked())
|
if(m_.chunked())
|
||||||
goto go_init_c;
|
goto go_init_c;
|
||||||
@@ -85,12 +85,12 @@ next(error_code& ec, Visit&& visit)
|
|||||||
|
|
||||||
case do_init:
|
case do_init:
|
||||||
{
|
{
|
||||||
rd_.init(ec);
|
wr_.init(ec);
|
||||||
if(ec)
|
if(ec)
|
||||||
return;
|
return;
|
||||||
if(split_)
|
if(split_)
|
||||||
goto go_header_only;
|
goto go_header_only;
|
||||||
auto result = rd_.get(ec);
|
auto result = wr_.get(ec);
|
||||||
if(ec == error::need_more)
|
if(ec == error::need_more)
|
||||||
goto go_header_only;
|
goto go_header_only;
|
||||||
if(ec)
|
if(ec)
|
||||||
@@ -100,7 +100,7 @@ next(error_code& ec, Visit&& visit)
|
|||||||
more_ = result->second;
|
more_ = result->second;
|
||||||
v_.template emplace<2>(
|
v_.template emplace<2>(
|
||||||
boost::in_place_init,
|
boost::in_place_init,
|
||||||
frd_->get(),
|
fwr_->get(),
|
||||||
result->first);
|
result->first);
|
||||||
s_ = do_header;
|
s_ = do_header;
|
||||||
BOOST_BEAST_FALLTHROUGH;
|
BOOST_BEAST_FALLTHROUGH;
|
||||||
@@ -111,7 +111,7 @@ next(error_code& ec, Visit&& visit)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
go_header_only:
|
go_header_only:
|
||||||
v_.template emplace<1>(frd_->get());
|
v_.template emplace<1>(fwr_->get());
|
||||||
s_ = do_header_only;
|
s_ = do_header_only;
|
||||||
BOOST_BEAST_FALLTHROUGH;
|
BOOST_BEAST_FALLTHROUGH;
|
||||||
case do_header_only:
|
case do_header_only:
|
||||||
@@ -124,7 +124,7 @@ next(error_code& ec, Visit&& visit)
|
|||||||
|
|
||||||
case do_body + 1:
|
case do_body + 1:
|
||||||
{
|
{
|
||||||
auto result = rd_.get(ec);
|
auto result = wr_.get(ec);
|
||||||
if(ec)
|
if(ec)
|
||||||
return;
|
return;
|
||||||
if(! result)
|
if(! result)
|
||||||
@@ -146,12 +146,12 @@ next(error_code& ec, Visit&& visit)
|
|||||||
BOOST_BEAST_FALLTHROUGH;
|
BOOST_BEAST_FALLTHROUGH;
|
||||||
case do_init_c:
|
case do_init_c:
|
||||||
{
|
{
|
||||||
rd_.init(ec);
|
wr_.init(ec);
|
||||||
if(ec)
|
if(ec)
|
||||||
return;
|
return;
|
||||||
if(split_)
|
if(split_)
|
||||||
goto go_header_only_c;
|
goto go_header_only_c;
|
||||||
auto result = rd_.get(ec);
|
auto result = wr_.get(ec);
|
||||||
if(ec == error::need_more)
|
if(ec == error::need_more)
|
||||||
goto go_header_only_c;
|
goto go_header_only_c;
|
||||||
if(ec)
|
if(ec)
|
||||||
@@ -164,7 +164,7 @@ next(error_code& ec, Visit&& visit)
|
|||||||
// do it all in one buffer
|
// do it all in one buffer
|
||||||
v_.template emplace<7>(
|
v_.template emplace<7>(
|
||||||
boost::in_place_init,
|
boost::in_place_init,
|
||||||
frd_->get(),
|
fwr_->get(),
|
||||||
buffer_size(result->first),
|
buffer_size(result->first),
|
||||||
boost::asio::const_buffer{nullptr, 0},
|
boost::asio::const_buffer{nullptr, 0},
|
||||||
chunk_crlf{},
|
chunk_crlf{},
|
||||||
@@ -177,7 +177,7 @@ next(error_code& ec, Visit&& visit)
|
|||||||
}
|
}
|
||||||
v_.template emplace<4>(
|
v_.template emplace<4>(
|
||||||
boost::in_place_init,
|
boost::in_place_init,
|
||||||
frd_->get(),
|
fwr_->get(),
|
||||||
buffer_size(result->first),
|
buffer_size(result->first),
|
||||||
boost::asio::const_buffer{nullptr, 0},
|
boost::asio::const_buffer{nullptr, 0},
|
||||||
chunk_crlf{},
|
chunk_crlf{},
|
||||||
@@ -192,7 +192,7 @@ next(error_code& ec, Visit&& visit)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
go_header_only_c:
|
go_header_only_c:
|
||||||
v_.template emplace<1>(frd_->get());
|
v_.template emplace<1>(fwr_->get());
|
||||||
s_ = do_header_only_c;
|
s_ = do_header_only_c;
|
||||||
case do_header_only_c:
|
case do_header_only_c:
|
||||||
do_visit<1>(ec, visit);
|
do_visit<1>(ec, visit);
|
||||||
@@ -204,7 +204,7 @@ next(error_code& ec, Visit&& visit)
|
|||||||
|
|
||||||
case do_body_c + 1:
|
case do_body_c + 1:
|
||||||
{
|
{
|
||||||
auto result = rd_.get(ec);
|
auto result = wr_.get(ec);
|
||||||
if(ec)
|
if(ec)
|
||||||
return;
|
return;
|
||||||
if(! result)
|
if(! result)
|
||||||
@@ -309,7 +309,7 @@ consume(std::size_t n)
|
|||||||
v_.template get<1>().consume(n);
|
v_.template get<1>().consume(n);
|
||||||
if(buffer_size(v_.template get<1>()) > 0)
|
if(buffer_size(v_.template get<1>()) > 0)
|
||||||
break;
|
break;
|
||||||
frd_ = boost::none;
|
fwr_ = boost::none;
|
||||||
header_done_ = true;
|
header_done_ = true;
|
||||||
if(! split_)
|
if(! split_)
|
||||||
goto go_complete;
|
goto go_complete;
|
||||||
@@ -353,7 +353,7 @@ consume(std::size_t n)
|
|||||||
v_.template get<1>().consume(n);
|
v_.template get<1>().consume(n);
|
||||||
if(buffer_size(v_.template get<1>()) > 0)
|
if(buffer_size(v_.template get<1>()) > 0)
|
||||||
break;
|
break;
|
||||||
frd_ = boost::none;
|
fwr_ = boost::none;
|
||||||
header_done_ = true;
|
header_done_ = true;
|
||||||
if(! split_)
|
if(! split_)
|
||||||
{
|
{
|
||||||
|
@@ -63,7 +63,7 @@ class parser
|
|||||||
parser<isRequest, Body, Allocator>>;
|
parser<isRequest, Body, Allocator>>;
|
||||||
|
|
||||||
message<isRequest, Body, basic_fields<Allocator>> m_;
|
message<isRequest, Body, basic_fields<Allocator>> m_;
|
||||||
typename Body::reader wr_;
|
typename Body::reader rd_;
|
||||||
bool rd_inited_ = false;
|
bool rd_inited_ = false;
|
||||||
|
|
||||||
std::function<void(
|
std::function<void(
|
||||||
@@ -376,7 +376,7 @@ private:
|
|||||||
boost::optional<std::uint64_t> const& content_length,
|
boost::optional<std::uint64_t> const& content_length,
|
||||||
error_code& ec)
|
error_code& ec)
|
||||||
{
|
{
|
||||||
wr_.init(content_length, ec);
|
rd_.init(content_length, ec);
|
||||||
rd_inited_ = true;
|
rd_inited_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -385,7 +385,7 @@ private:
|
|||||||
string_view body,
|
string_view body,
|
||||||
error_code& ec)
|
error_code& ec)
|
||||||
{
|
{
|
||||||
return wr_.put(boost::asio::buffer(
|
return rd_.put(boost::asio::buffer(
|
||||||
body.data(), body.size()), ec);
|
body.data(), body.size()), ec);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -408,14 +408,14 @@ private:
|
|||||||
{
|
{
|
||||||
if(cb_b_)
|
if(cb_b_)
|
||||||
return cb_b_(remain, body, ec);
|
return cb_b_(remain, body, ec);
|
||||||
return wr_.put(boost::asio::buffer(
|
return rd_.put(boost::asio::buffer(
|
||||||
body.data(), body.size()), ec);
|
body.data(), body.size()), ec);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
on_finish_impl(error_code& ec)
|
on_finish_impl(error_code& ec)
|
||||||
{
|
{
|
||||||
wr_.finish(ec);
|
rd_.finish(ec);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -104,8 +104,8 @@ private:
|
|||||||
do_complete = 120
|
do_complete = 120
|
||||||
};
|
};
|
||||||
|
|
||||||
void frdinit(std::true_type);
|
void fwrinit(std::true_type);
|
||||||
void frdinit(std::false_type);
|
void fwrinit(std::false_type);
|
||||||
|
|
||||||
template<std::size_t, class Visit>
|
template<std::size_t, class Visit>
|
||||||
void
|
void
|
||||||
@@ -173,8 +173,8 @@ private:
|
|||||||
using pcb8_t = buffers_prefix_view<cb8_t const&>;
|
using pcb8_t = buffers_prefix_view<cb8_t const&>;
|
||||||
|
|
||||||
value_type& m_;
|
value_type& m_;
|
||||||
writer rd_;
|
writer wr_;
|
||||||
boost::optional<typename Fields::writer> frd_;
|
boost::optional<typename Fields::writer> fwr_;
|
||||||
beast::detail::variant<
|
beast::detail::variant<
|
||||||
cb1_t, cb2_t, cb3_t, cb4_t,
|
cb1_t, cb2_t, cb3_t, cb4_t,
|
||||||
cb5_t ,cb6_t, cb7_t, cb8_t> v_;
|
cb5_t ,cb6_t, cb7_t, cb8_t> v_;
|
||||||
@@ -336,7 +336,7 @@ public:
|
|||||||
void
|
void
|
||||||
consume(std::size_t n);
|
consume(std::size_t n);
|
||||||
|
|
||||||
/** Provides low-level access to the associated @b BodyWriter
|
/** Provides low-level access to the associated @b BodyWriter (DEPRECATED)
|
||||||
|
|
||||||
This function provides access to the instance of the writer
|
This function provides access to the instance of the writer
|
||||||
associated with the body and created by the serializer
|
associated with the body and created by the serializer
|
||||||
@@ -349,7 +349,27 @@ public:
|
|||||||
writer&
|
writer&
|
||||||
reader_impl()
|
reader_impl()
|
||||||
{
|
{
|
||||||
return rd_;
|
#ifndef BOOST_BEAST_ALLOW_DEPRECATED
|
||||||
|
BOOST_STATIC_ASSERT_MSG(sizeof(Body) == 0,
|
||||||
|
BOOST_BEAST_DEPRECATION_STRING);
|
||||||
|
#endif
|
||||||
|
return wr_;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Provides low-level access to the associated @b BodyWriter
|
||||||
|
|
||||||
|
This function provides access to the instance of the writer
|
||||||
|
associated with the body and created by the serializer
|
||||||
|
upon construction. The behavior of accessing this object
|
||||||
|
is defined by the specification of the particular writer
|
||||||
|
and its associated body.
|
||||||
|
|
||||||
|
@return A reference to the writer.
|
||||||
|
*/
|
||||||
|
writer&
|
||||||
|
writer_impl()
|
||||||
|
{
|
||||||
|
return wr_;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user