mirror of
https://github.com/boostorg/beast.git
synced 2025-07-30 21:07:26 +02:00
Remove dynamic_buffer_ref:
* dynamic_buffer_ref is removed, because Asio / Networking has introduced the DynamicBuffer_v2 concept which is incompatible with Beast's storage types. The next version of Beast (1.70) will provide changes to interoperate with Asio / Networking's new concepts.
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
Version 230:
|
Version 230:
|
||||||
|
|
||||||
* Don't use dynamic_buffer_ref
|
* Don't use dynamic_buffer_ref
|
||||||
|
* Remove dynamic_buffer_ref
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -133,15 +133,6 @@ set of additional implementations of the dynamic buffer concept:
|
|||||||
The basic container is an
|
The basic container is an
|
||||||
[@https://en.cppreference.com/w/cpp/named_req/AllocatorAwareContainer [*AllocatorAwareContainer]].
|
[@https://en.cppreference.com/w/cpp/named_req/AllocatorAwareContainer [*AllocatorAwareContainer]].
|
||||||
]]
|
]]
|
||||||
[[
|
|
||||||
[link beast.ref.boost__beast__dynamic_buffer_ref `dynamic_buffer_ref`]
|
|
||||||
[link beast.ref.boost__beast__dynamic_buffer_ref_wrapper `dynamic_buffer_ref_wrapper`]
|
|
||||||
][
|
|
||||||
This function returns a wrapper containing a reference to the passed
|
|
||||||
dynamic buffer, permitting a Beast dynamic buffer type (which acts
|
|
||||||
like a true container type) to be used with Networking algorithms
|
|
||||||
which want to take ownership of the dynamic buffer in their interface.
|
|
||||||
]]
|
|
||||||
[[
|
[[
|
||||||
[link beast.ref.boost__beast__flat_static_buffer `flat_static_buffer`]
|
[link beast.ref.boost__beast__flat_static_buffer `flat_static_buffer`]
|
||||||
[link beast.ref.boost__beast__flat_static_buffer_base `flat_static_buffer_base`]
|
[link beast.ref.boost__beast__flat_static_buffer_base `flat_static_buffer_base`]
|
||||||
|
@ -89,18 +89,6 @@ composed operations:
|
|||||||
handler, whose associated allocator and associated executor will
|
handler, whose associated allocator and associated executor will
|
||||||
will be the same as those of the original handler.
|
will be the same as those of the original handler.
|
||||||
]]
|
]]
|
||||||
[[
|
|
||||||
[link beast.ref.boost__beast__handler_ptr `handler_ptr`]
|
|
||||||
][
|
|
||||||
This is a smart pointer container used to manage the internal state of a
|
|
||||||
composed operation. It is useful when the state is non trivial. For example
|
|
||||||
when the state has non-movable or contains expensive to move types. The
|
|
||||||
container takes ownership of the final completion handler, and provides
|
|
||||||
boilerplate to invoke the final handler in a way that also deletes the
|
|
||||||
internal state. The internal state is allocated using the final completion
|
|
||||||
handler's associated allocator, benefiting from all handler memory
|
|
||||||
management optimizations transparently.
|
|
||||||
]]
|
|
||||||
[[
|
[[
|
||||||
[link beast.ref.boost__beast__saved_handler `saved_handler`]
|
[link beast.ref.boost__beast__saved_handler `saved_handler`]
|
||||||
][
|
][
|
||||||
|
@ -132,7 +132,6 @@
|
|||||||
<member><link linkend="beast.ref.boost__beast__buffers_cat_view">buffers_cat_view</link></member>
|
<member><link linkend="beast.ref.boost__beast__buffers_cat_view">buffers_cat_view</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__buffers_prefix_view">buffers_prefix_view</link></member>
|
<member><link linkend="beast.ref.boost__beast__buffers_prefix_view">buffers_prefix_view</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__buffers_suffix">buffers_suffix</link></member>
|
<member><link linkend="beast.ref.boost__beast__buffers_suffix">buffers_suffix</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__dynamic_buffer_ref_wrapper">dynamic_buffer_ref_wrapper</link> <emphasis role="green">★</emphasis></member>
|
|
||||||
<member><link linkend="beast.ref.boost__beast__flat_buffer">flat_buffer</link></member>
|
<member><link linkend="beast.ref.boost__beast__flat_buffer">flat_buffer</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__flat_static_buffer">flat_static_buffer</link></member>
|
<member><link linkend="beast.ref.boost__beast__flat_static_buffer">flat_static_buffer</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__flat_static_buffer_base">flat_static_buffer_base</link></member>
|
<member><link linkend="beast.ref.boost__beast__flat_static_buffer_base">flat_static_buffer_base</link></member>
|
||||||
@ -150,7 +149,6 @@
|
|||||||
<member><link linkend="beast.ref.boost__beast__buffers_range">buffers_range</link> <emphasis role="green">★</emphasis></member>
|
<member><link linkend="beast.ref.boost__beast__buffers_range">buffers_range</link> <emphasis role="green">★</emphasis></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__buffers_range_ref">buffers_range_ref</link> <emphasis role="green">★</emphasis></member>
|
<member><link linkend="beast.ref.boost__beast__buffers_range_ref">buffers_range_ref</link> <emphasis role="green">★</emphasis></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__buffers_to_string">buffers_to_string</link></member>
|
<member><link linkend="beast.ref.boost__beast__buffers_to_string">buffers_to_string</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__dynamic_buffer_ref">dynamic_buffer_ref</link> <emphasis role="green">★</emphasis></member>
|
|
||||||
<member><link linkend="beast.ref.boost__beast__make_printable">make_printable</link> <emphasis role="green">★</emphasis></member>
|
<member><link linkend="beast.ref.boost__beast__make_printable">make_printable</link> <emphasis role="green">★</emphasis></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__ostream">ostream</link></member>
|
<member><link linkend="beast.ref.boost__beast__ostream">ostream</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__read_size">read_size</link></member>
|
<member><link linkend="beast.ref.boost__beast__read_size">read_size</link></member>
|
||||||
|
@ -160,7 +160,6 @@
|
|||||||
* New:
|
* New:
|
||||||
* `saved_handler`
|
* `saved_handler`
|
||||||
* `buffers_range_ref`
|
* `buffers_range_ref`
|
||||||
* `dynamic_buffer_ref`
|
|
||||||
* `executor_type`
|
* `executor_type`
|
||||||
* `get_lowest_layer`,
|
* `get_lowest_layer`,
|
||||||
`lowest_layer_type`
|
`lowest_layer_type`
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
#include <boost/beast/core/buffers_suffix.hpp>
|
#include <boost/beast/core/buffers_suffix.hpp>
|
||||||
#include <boost/beast/core/buffers_to_string.hpp>
|
#include <boost/beast/core/buffers_to_string.hpp>
|
||||||
#include <boost/beast/core/detect_ssl.hpp>
|
#include <boost/beast/core/detect_ssl.hpp>
|
||||||
#include <boost/beast/core/dynamic_buffer_ref.hpp>
|
|
||||||
#include <boost/beast/core/error.hpp>
|
#include <boost/beast/core/error.hpp>
|
||||||
#include <boost/beast/core/file.hpp>
|
#include <boost/beast/core/file.hpp>
|
||||||
#include <boost/beast/core/file_base.hpp>
|
#include <boost/beast/core/file_base.hpp>
|
||||||
|
@ -1,143 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
|
|
||||||
//
|
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
// Official repository: https://github.com/boostorg/beast
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef BOOST_BEAST_CORE_DYNAMIC_BUFFER_REF_HPP
|
|
||||||
#define BOOST_BEAST_CORE_DYNAMIC_BUFFER_REF_HPP
|
|
||||||
|
|
||||||
#include <boost/beast/core/detail/config.hpp>
|
|
||||||
#include <boost/asio/buffer.hpp>
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
namespace boost {
|
|
||||||
namespace beast {
|
|
||||||
|
|
||||||
/** A lightweight reference to a dynamic buffer.
|
|
||||||
|
|
||||||
Objects of this type meet the requirements of <em>DynamicBuffer</em>.
|
|
||||||
This is the wrapper returned by the function @ref dynamic_buffer_ref.
|
|
||||||
|
|
||||||
@see dynamic_buffer_ref
|
|
||||||
*/
|
|
||||||
template<class DynamicBuffer>
|
|
||||||
class dynamic_buffer_ref_wrapper
|
|
||||||
#if ! BOOST_BEAST_DOXYGEN
|
|
||||||
{
|
|
||||||
static_assert(net::is_dynamic_buffer<DynamicBuffer>::value,
|
|
||||||
"DynamicBuffer type requirements not met");
|
|
||||||
|
|
||||||
DynamicBuffer& b_;
|
|
||||||
|
|
||||||
public:
|
|
||||||
using const_buffers_type = typename
|
|
||||||
DynamicBuffer::const_buffers_type;
|
|
||||||
|
|
||||||
using mutable_buffers_type = typename
|
|
||||||
DynamicBuffer::mutable_buffers_type;
|
|
||||||
|
|
||||||
dynamic_buffer_ref_wrapper(
|
|
||||||
dynamic_buffer_ref_wrapper&&) = default;
|
|
||||||
|
|
||||||
dynamic_buffer_ref_wrapper(
|
|
||||||
dynamic_buffer_ref_wrapper const&) = default;
|
|
||||||
|
|
||||||
explicit
|
|
||||||
dynamic_buffer_ref_wrapper(
|
|
||||||
DynamicBuffer& b) noexcept
|
|
||||||
: b_(b)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
std::size_t
|
|
||||||
size() const noexcept
|
|
||||||
{
|
|
||||||
return b_.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::size_t
|
|
||||||
max_size() const noexcept
|
|
||||||
{
|
|
||||||
return b_.max_size();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::size_t
|
|
||||||
capacity() const noexcept
|
|
||||||
{
|
|
||||||
return b_.capacity();
|
|
||||||
}
|
|
||||||
|
|
||||||
const_buffers_type
|
|
||||||
data() const noexcept
|
|
||||||
{
|
|
||||||
return b_.data();
|
|
||||||
}
|
|
||||||
|
|
||||||
mutable_buffers_type
|
|
||||||
prepare(std::size_t n)
|
|
||||||
{
|
|
||||||
return b_.prepare(n);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
commit(std::size_t n)
|
|
||||||
{
|
|
||||||
b_.commit(n);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
consume(std::size_t n)
|
|
||||||
{
|
|
||||||
b_.consume(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
|
|
||||||
/** Return a non-owning reference to a dynamic buffer.
|
|
||||||
|
|
||||||
This function returns a wrapper which holds a reference to the
|
|
||||||
passed dynamic buffer. The wrapper meets the requirements of
|
|
||||||
<em>DynamicBuffer</em>, allowing its use in Networking algorithms
|
|
||||||
which want to take ownership of the dynamic buffer. Since Beast
|
|
||||||
dynamic buffers are true storage types, they cannot be used directly
|
|
||||||
with functions that take ownership of the dynamic buffer.
|
|
||||||
|
|
||||||
@par Example
|
|
||||||
This function reads a line of text from a stream into a
|
|
||||||
@ref beast::basic_flat_buffer, using the net function `async_read_until`.
|
|
||||||
@code
|
|
||||||
template <class SyncReadStream>
|
|
||||||
std::size_t read_line (SyncReadStream& stream, flat_buffer& buffer)
|
|
||||||
{
|
|
||||||
return net::read_until(stream, dynamic_buffer_ref(buffer), "\r\n");
|
|
||||||
}
|
|
||||||
@endcode
|
|
||||||
|
|
||||||
@param buffer The dynamic buffer to wrap. Ownership of the buffer is
|
|
||||||
not transferred, the caller is still responsible for managing the
|
|
||||||
lifetime of the original object.
|
|
||||||
|
|
||||||
@return A wrapper meeting the requirements of <em>DynamicBuffer</em>
|
|
||||||
which references the original dynamic buffer.
|
|
||||||
|
|
||||||
@see dynamic_buffer_ref_wrapper
|
|
||||||
*/
|
|
||||||
template<class DynamicBuffer>
|
|
||||||
dynamic_buffer_ref_wrapper<DynamicBuffer>
|
|
||||||
dynamic_buffer_ref(DynamicBuffer& buffer) noexcept
|
|
||||||
{
|
|
||||||
static_assert(net::is_dynamic_buffer<DynamicBuffer>::value,
|
|
||||||
"DynamicBuffer type requirements not met");
|
|
||||||
return dynamic_buffer_ref_wrapper<DynamicBuffer>(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // beast
|
|
||||||
} // boost
|
|
||||||
|
|
||||||
#endif
|
|
@ -44,7 +44,6 @@ add_executable (tests-beast-core
|
|||||||
buffers_suffix.cpp
|
buffers_suffix.cpp
|
||||||
buffers_to_string.cpp
|
buffers_to_string.cpp
|
||||||
detect_ssl.cpp
|
detect_ssl.cpp
|
||||||
dynamic_buffer_ref.cpp
|
|
||||||
error.cpp
|
error.cpp
|
||||||
file.cpp
|
file.cpp
|
||||||
file_base.cpp
|
file_base.cpp
|
||||||
|
@ -32,7 +32,6 @@ local SOURCES =
|
|||||||
buffers_suffix.cpp
|
buffers_suffix.cpp
|
||||||
buffers_to_string.cpp
|
buffers_to_string.cpp
|
||||||
detect_ssl.cpp
|
detect_ssl.cpp
|
||||||
dynamic_buffer_ref.cpp
|
|
||||||
error.cpp
|
error.cpp
|
||||||
file.cpp
|
file.cpp
|
||||||
file_base.cpp
|
file_base.cpp
|
||||||
|
@ -1,73 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
|
|
||||||
//
|
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
// Official repository: https://github.com/boostorg/beast
|
|
||||||
//
|
|
||||||
|
|
||||||
// Test that header file is self-contained.
|
|
||||||
#include <boost/beast/core/dynamic_buffer_ref.hpp>
|
|
||||||
|
|
||||||
#include <boost/beast/_experimental/unit_test/suite.hpp>
|
|
||||||
#include <boost/beast/_experimental/test/stream.hpp>
|
|
||||||
#include <boost/beast/core/flat_buffer.hpp>
|
|
||||||
#include <boost/asio/read_until.hpp>
|
|
||||||
|
|
||||||
namespace boost {
|
|
||||||
namespace beast {
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
template <class SyncReadStream>
|
|
||||||
std::size_t read_line (SyncReadStream& stream, flat_buffer& buffer)
|
|
||||||
{
|
|
||||||
return net::read_until(stream, dynamic_buffer_ref(buffer), "\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
} // (anon)
|
|
||||||
|
|
||||||
class dynamic_buffer_ref_test : public beast::unit_test::suite
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void
|
|
||||||
testJavadocs()
|
|
||||||
{
|
|
||||||
BEAST_EXPECT(static_cast<
|
|
||||||
std::size_t(*)(test::stream&, flat_buffer&)>(
|
|
||||||
&read_line<test::stream>));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
testBuffer()
|
|
||||||
{
|
|
||||||
flat_buffer b;
|
|
||||||
b.max_size(1000);
|
|
||||||
auto db = dynamic_buffer_ref(b);
|
|
||||||
BEAST_EXPECT(db.max_size() == 1000);
|
|
||||||
BEAST_EXPECT(db.size() == 0);
|
|
||||||
BEAST_EXPECT(db.capacity() == 0);
|
|
||||||
db.prepare(512);
|
|
||||||
BEAST_EXPECT(db.size() == 0);
|
|
||||||
BEAST_EXPECT(db.capacity() == 512);
|
|
||||||
db.commit(12);
|
|
||||||
BEAST_EXPECT(db.size() == 12);
|
|
||||||
BEAST_EXPECT(db.capacity() == 512);
|
|
||||||
BEAST_EXPECT(buffer_bytes(db.data()) == 12);
|
|
||||||
db.consume(12);
|
|
||||||
BEAST_EXPECT(db.size() == 0);
|
|
||||||
BEAST_EXPECT(db.capacity() == 512);
|
|
||||||
}
|
|
||||||
|
|
||||||
void run() override
|
|
||||||
{
|
|
||||||
testJavadocs();
|
|
||||||
testBuffer();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
BEAST_DEFINE_TESTSUITE(beast,core,dynamic_buffer_ref);
|
|
||||||
|
|
||||||
} // beast
|
|
||||||
} // boost
|
|
Reference in New Issue
Block a user