forked from boostorg/beast
serializer::next replaces serializer::get (API Change):
Actions Required: * Use serializer::next instead of serializer::get at call sites
This commit is contained in:
@@ -8,12 +8,15 @@ HTTP:
|
|||||||
API Changes:
|
API Changes:
|
||||||
|
|
||||||
* Refactor header and message constructors
|
* Refactor header and message constructors
|
||||||
|
* serializer::next replaces serializer::get
|
||||||
|
|
||||||
Actions Required:
|
Actions Required:
|
||||||
|
|
||||||
* Evaluate each message constructor call site and
|
* Evaluate each message constructor call site and
|
||||||
adjust the constructor argument list as needed.
|
adjust the constructor argument list as needed.
|
||||||
|
|
||||||
|
* Use serializer::next instead of serializer::get at call sites
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
Version 72:
|
Version 72:
|
||||||
|
@@ -18,12 +18,12 @@ to produce buffers until all of the buffers have been generated. Then the
|
|||||||
serializer is destroyed.
|
serializer is destroyed.
|
||||||
|
|
||||||
To obtain the serialized next buffer sequence, call
|
To obtain the serialized next buffer sequence, call
|
||||||
[link beast.ref.beast__http__serializer.get `serializer::get`].
|
[link beast.ref.beast__http__serializer.next `serializer::next`].
|
||||||
Then, call
|
Then, call
|
||||||
[link beast.ref.beast__http__serializer.consume `serializer::consume`]
|
[link beast.ref.beast__http__serializer.consume `serializer::consume`]
|
||||||
to indicate the number of bytes consumed. This updates the next
|
to indicate the number of bytes consumed. This updates the next
|
||||||
set of buffers to be returned, if any.
|
set of buffers to be returned, if any.
|
||||||
`serializer::get` takes an error code parameter and invokes a visitor
|
`serializer::next` takes an error code parameter and invokes a visitor
|
||||||
argument with the error code and buffer of unspecified type. In C++14
|
argument with the error code and buffer of unspecified type. In C++14
|
||||||
this is easily expressed with a generic lambda. The function
|
this is easily expressed with a generic lambda. The function
|
||||||
[link beast.ref.beast__http__serializer.is_done `serializer::is_done`]
|
[link beast.ref.beast__http__serializer.is_done `serializer::is_done`]
|
||||||
|
@@ -649,7 +649,7 @@ write_ostream(
|
|||||||
// In C++14 we could use a generic lambda but since we want
|
// In C++14 we could use a generic lambda but since we want
|
||||||
// to require only C++11, the lambda is written out by hand.
|
// to require only C++11, the lambda is written out by hand.
|
||||||
// This function call retrieves the next serialized buffers.
|
// This function call retrieves the next serialized buffers.
|
||||||
sr.get(ec, lambda);
|
sr.next(ec, lambda);
|
||||||
if(ec)
|
if(ec)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -50,7 +50,7 @@ template<bool isRequest, class Body,
|
|||||||
template<class Visit>
|
template<class Visit>
|
||||||
void
|
void
|
||||||
serializer<isRequest, Body, Fields, ChunkDecorator>::
|
serializer<isRequest, Body, Fields, ChunkDecorator>::
|
||||||
get(error_code& ec, Visit&& visit)
|
next(error_code& ec, Visit&& visit)
|
||||||
{
|
{
|
||||||
using boost::asio::buffer_size;
|
using boost::asio::buffer_size;
|
||||||
switch(s_)
|
switch(s_)
|
||||||
|
@@ -131,7 +131,7 @@ operator()()
|
|||||||
return s_.get_io_service().post(
|
return s_.get_io_service().post(
|
||||||
bind_handler(std::move(*this), ec, 0));
|
bind_handler(std::move(*this), ec, 0));
|
||||||
lambda f{*this};
|
lambda f{*this};
|
||||||
sr_.get(ec, f);
|
sr_.next(ec, f);
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(! f.invoked);
|
BOOST_ASSERT(! f.invoked);
|
||||||
@@ -298,7 +298,7 @@ operator()(error_code ec,
|
|||||||
}
|
}
|
||||||
lambda f{*this};
|
lambda f{*this};
|
||||||
state_ = 2;
|
state_ = 2;
|
||||||
sr_.get(ec, f);
|
sr_.next(ec, f);
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(! f.invoked);
|
BOOST_ASSERT(! f.invoked);
|
||||||
@@ -328,7 +328,7 @@ operator()(error_code ec,
|
|||||||
if(Predicate{}(sr_))
|
if(Predicate{}(sr_))
|
||||||
goto upcall;
|
goto upcall;
|
||||||
lambda f{*this};
|
lambda f{*this};
|
||||||
sr_.get(ec, f);
|
sr_.next(ec, f);
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(! f.invoked);
|
BOOST_ASSERT(! f.invoked);
|
||||||
@@ -540,7 +540,7 @@ write_some(SyncWriteStream& stream, serializer<
|
|||||||
ec.assign(0, ec.category());
|
ec.assign(0, ec.category());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sr.get(ec, f);
|
sr.next(ec, f);
|
||||||
if(ec)
|
if(ec)
|
||||||
return;
|
return;
|
||||||
if(f.invoked)
|
if(f.invoked)
|
||||||
@@ -615,7 +615,7 @@ write_header(SyncWriteStream& stream, serializer<
|
|||||||
detail::write_lambda<SyncWriteStream> f{stream};
|
detail::write_lambda<SyncWriteStream> f{stream};
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sr.get(ec, f);
|
sr.next(ec, f);
|
||||||
if(ec)
|
if(ec)
|
||||||
return;
|
return;
|
||||||
BOOST_ASSERT(f.invoked);
|
BOOST_ASSERT(f.invoked);
|
||||||
@@ -686,7 +686,7 @@ write(SyncWriteStream& stream, serializer<
|
|||||||
detail::write_lambda<SyncWriteStream> f{stream};
|
detail::write_lambda<SyncWriteStream> f{stream};
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sr.get(ec, f);
|
sr.next(ec, f);
|
||||||
if(ec)
|
if(ec)
|
||||||
return;
|
return;
|
||||||
if(f.invoked)
|
if(f.invoked)
|
||||||
@@ -864,7 +864,7 @@ operator<<(std::ostream& os,
|
|||||||
detail::write_ostream_lambda<decltype(sr)> f{os, sr};
|
detail::write_ostream_lambda<decltype(sr)> f{os, sr};
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sr.get(ec, f);
|
sr.next(ec, f);
|
||||||
if(os.fail())
|
if(os.fail())
|
||||||
break;
|
break;
|
||||||
if(ec == error::end_of_stream)
|
if(ec == error::end_of_stream)
|
||||||
|
@@ -236,7 +236,7 @@ public:
|
|||||||
|
|
||||||
The implementation guarantees that the message passed on
|
The implementation guarantees that the message passed on
|
||||||
construction will not be accessed until the first call to
|
construction will not be accessed until the first call to
|
||||||
@ref get. This allows the message to be lazily created.
|
@ref next. This allows the message to be lazily created.
|
||||||
For example, if the header is filled in before serialization.
|
For example, if the header is filled in before serialization.
|
||||||
|
|
||||||
@param msg The message to serialize, which must remain valid
|
@param msg The message to serialize, which must remain valid
|
||||||
@@ -327,18 +327,18 @@ public:
|
|||||||
void visit(error_code&, ConstBufferSequence const&);
|
void visit(error_code&, ConstBufferSequence const&);
|
||||||
@endcode
|
@endcode
|
||||||
The function is not copied, if no error occurs it will be
|
The function is not copied, if no error occurs it will be
|
||||||
invoked before the call to @ref get returns.
|
invoked before the call to @ref next returns.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
template<class Visit>
|
template<class Visit>
|
||||||
void
|
void
|
||||||
get(error_code& ec, Visit&& visit);
|
next(error_code& ec, Visit&& visit);
|
||||||
|
|
||||||
/** Consume buffer octets in the serialization.
|
/** Consume buffer octets in the serialization.
|
||||||
|
|
||||||
This function should be called after one or more octets
|
This function should be called after one or more octets
|
||||||
contained in the buffers provided in the prior call
|
contained in the buffers provided in the prior call
|
||||||
to @ref get have been used.
|
to @ref next have been used.
|
||||||
|
|
||||||
After a call to @ref consume, callers should check the
|
After a call to @ref consume, callers should check the
|
||||||
return value of @ref is_done to determine if the entire
|
return value of @ref is_done to determine if the entire
|
||||||
@@ -346,7 +346,7 @@ public:
|
|||||||
|
|
||||||
@param n The number of octets to consume. This number must
|
@param n The number of octets to consume. This number must
|
||||||
be greater than zero and no greater than the number of
|
be greater than zero and no greater than the number of
|
||||||
octets in the buffers provided in the prior call to @ref get.
|
octets in the buffers provided in the prior call to @ref next.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
consume(std::size_t n);
|
consume(std::size_t n);
|
||||||
|
@@ -202,7 +202,7 @@ print_cxx14(message<isRequest, Body, Fields> const& m)
|
|||||||
serializer<isRequest, Body, Fields> sr{m};
|
serializer<isRequest, Body, Fields> sr{m};
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sr.get(ec,
|
sr.next(ec,
|
||||||
[&sr](error_code& ec, auto const& buffer)
|
[&sr](error_code& ec, auto const& buffer)
|
||||||
{
|
{
|
||||||
ec.assign(0, ec.category());
|
ec.assign(0, ec.category());
|
||||||
@@ -246,7 +246,7 @@ print(message<isRequest, Body, Fields> const& m)
|
|||||||
serializer<isRequest, Body, Fields> sr{m};
|
serializer<isRequest, Body, Fields> sr{m};
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sr.get(ec, lambda<decltype(sr)>{sr});
|
sr.next(ec, lambda<decltype(sr)>{sr});
|
||||||
}
|
}
|
||||||
while(! ec && ! sr.is_done());
|
while(! ec && ! sr.is_done());
|
||||||
if(! ec)
|
if(! ec)
|
||||||
@@ -270,7 +270,7 @@ split_print_cxx14(message<isRequest, Body, Fields> const& m)
|
|||||||
std::cout << "Header:" << std::endl;
|
std::cout << "Header:" << std::endl;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sr.get(ec,
|
sr.next(ec,
|
||||||
[&sr](error_code& ec, auto const& buffer)
|
[&sr](error_code& ec, auto const& buffer)
|
||||||
{
|
{
|
||||||
ec.assign(0, ec.category());
|
ec.assign(0, ec.category());
|
||||||
@@ -284,7 +284,7 @@ split_print_cxx14(message<isRequest, Body, Fields> const& m)
|
|||||||
std::cout << "Body:" << std::endl;
|
std::cout << "Body:" << std::endl;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sr.get(ec,
|
sr.next(ec,
|
||||||
[&sr](error_code& ec, auto const& buffer)
|
[&sr](error_code& ec, auto const& buffer)
|
||||||
{
|
{
|
||||||
ec.assign(0, ec.category());
|
ec.assign(0, ec.category());
|
||||||
|
Reference in New Issue
Block a user