mirror of
https://github.com/boostorg/beast.git
synced 2025-07-30 12:57:31 +02:00
Rename to flat_buffer, basic_flat_buffer (API Change):
These classes are renamed: * flat_streambuf to flat_buffer * basic_flat_streambuf to basic_flat_buffer
This commit is contained in:
@ -11,6 +11,7 @@ API Changes:
|
|||||||
* New ostream() returns dynamic buffer output stream
|
* New ostream() returns dynamic buffer output stream
|
||||||
* New buffers() replaces to_string()
|
* New buffers() replaces to_string()
|
||||||
* Rename to multi_buffer, basic_multi_buffer
|
* Rename to multi_buffer, basic_multi_buffer
|
||||||
|
* Rename to flat_buffer, basic_flat_buffer
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ in the examples directory.
|
|||||||
Use HTTP to request the root page from a website and print the response:
|
Use HTTP to request the root page from a website and print the response:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
#include <beast/core.hpp>
|
||||||
#include <beast/http.hpp>
|
#include <beast/http.hpp>
|
||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
@ -45,7 +46,7 @@ int main()
|
|||||||
beast::http::write(sock, req);
|
beast::http::write(sock, req);
|
||||||
|
|
||||||
// Receive and print HTTP response using beast
|
// Receive and print HTTP response using beast
|
||||||
beast::multi_buffer b;
|
beast::flat_buffer b;
|
||||||
beast::http::response<beast::http::dynamic_body> res;
|
beast::http::response<beast::http::dynamic_body> res;
|
||||||
beast::http::read(sock, b, res);
|
beast::http::read(sock, b, res);
|
||||||
std::cout << res;
|
std::cout << res;
|
||||||
|
@ -152,7 +152,7 @@
|
|||||||
<bridgehead renderas="sect3">Classes</bridgehead>
|
<bridgehead renderas="sect3">Classes</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member><link linkend="beast.ref.async_completion">async_completion</link></member>
|
<member><link linkend="beast.ref.async_completion">async_completion</link></member>
|
||||||
<member><link linkend="beast.ref.basic_flat_streambuf">basic_flat_streambuf</link></member>
|
<member><link linkend="beast.ref.basic_flat_buffer">basic_flat_buffer</link></member>
|
||||||
<member><link linkend="beast.ref.basic_multi_buffer">basic_multi_buffer</link></member>
|
<member><link linkend="beast.ref.basic_multi_buffer">basic_multi_buffer</link></member>
|
||||||
<member><link linkend="beast.ref.buffers_adapter">buffers_adapter</link></member>
|
<member><link linkend="beast.ref.buffers_adapter">buffers_adapter</link></member>
|
||||||
<member><link linkend="beast.ref.consuming_buffers">consuming_buffers</link></member>
|
<member><link linkend="beast.ref.consuming_buffers">consuming_buffers</link></member>
|
||||||
@ -161,7 +161,7 @@
|
|||||||
<member><link linkend="beast.ref.error_category">error_category</link></member>
|
<member><link linkend="beast.ref.error_category">error_category</link></member>
|
||||||
<member><link linkend="beast.ref.error_code">error_code</link></member>
|
<member><link linkend="beast.ref.error_code">error_code</link></member>
|
||||||
<member><link linkend="beast.ref.error_condition">error_condition</link></member>
|
<member><link linkend="beast.ref.error_condition">error_condition</link></member>
|
||||||
<member><link linkend="beast.ref.flat_streambuf">flat_streambuf</link></member>
|
<member><link linkend="beast.ref.flat_buffer">flat_buffer</link></member>
|
||||||
<member><link linkend="beast.ref.handler_alloc">handler_alloc</link></member>
|
<member><link linkend="beast.ref.handler_alloc">handler_alloc</link></member>
|
||||||
<member><link linkend="beast.ref.handler_ptr">handler_ptr</link></member>
|
<member><link linkend="beast.ref.handler_ptr">handler_ptr</link></member>
|
||||||
<member><link linkend="beast.ref.multi_buffer">multi_buffer</link></member>
|
<member><link linkend="beast.ref.multi_buffer">multi_buffer</link></member>
|
||||||
|
@ -34,7 +34,7 @@ int main()
|
|||||||
beast::http::write(sock, req);
|
beast::http::write(sock, req);
|
||||||
|
|
||||||
// Receive and print HTTP response using beast
|
// Receive and print HTTP response using beast
|
||||||
beast::multi_buffer b;
|
beast::flat_buffer b;
|
||||||
beast::http::response<beast::http::dynamic_body> res;
|
beast::http::response<beast::http::dynamic_body> res;
|
||||||
beast::http::read(sock, b, res);
|
beast::http::read(sock, b, res);
|
||||||
std::cout << res;
|
std::cout << res;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#include <beast/core/consuming_buffers.hpp>
|
#include <beast/core/consuming_buffers.hpp>
|
||||||
#include <beast/core/dynabuf_readstream.hpp>
|
#include <beast/core/dynabuf_readstream.hpp>
|
||||||
#include <beast/core/error.hpp>
|
#include <beast/core/error.hpp>
|
||||||
#include <beast/core/flat_streambuf.hpp>
|
#include <beast/core/flat_buffer.hpp>
|
||||||
#include <beast/core/handler_alloc.hpp>
|
#include <beast/core/handler_alloc.hpp>
|
||||||
#include <beast/core/handler_concepts.hpp>
|
#include <beast/core/handler_concepts.hpp>
|
||||||
#include <beast/core/handler_helpers.hpp>
|
#include <beast/core/handler_helpers.hpp>
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef BEAST_FLAT_STREAMBUF_HPP
|
#ifndef BEAST_FLAT_BUFFER_HPP
|
||||||
#define BEAST_FLAT_STREAMBUF_HPP
|
#define BEAST_FLAT_BUFFER_HPP
|
||||||
|
|
||||||
#include <beast/config.hpp>
|
#include <beast/config.hpp>
|
||||||
#include <beast/core/detail/empty_base_optimization.hpp>
|
#include <beast/core/detail/empty_base_optimization.hpp>
|
||||||
@ -34,7 +34,7 @@ namespace beast {
|
|||||||
is stored in a single contiguous buffer.
|
is stored in a single contiguous buffer.
|
||||||
*/
|
*/
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
class basic_flat_streambuf
|
class basic_flat_buffer
|
||||||
#if ! BEAST_DOXYGEN
|
#if ! BEAST_DOXYGEN
|
||||||
: private detail::empty_base_optimization<
|
: private detail::empty_base_optimization<
|
||||||
typename std::allocator_traits<Allocator>::
|
typename std::allocator_traits<Allocator>::
|
||||||
@ -58,7 +58,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<class OtherAlloc>
|
template<class OtherAlloc>
|
||||||
friend class basic_flat_streambuf;
|
friend class basic_flat_buffer;
|
||||||
|
|
||||||
using alloc_traits =
|
using alloc_traits =
|
||||||
std::allocator_traits<allocator_type>;
|
std::allocator_traits<allocator_type>;
|
||||||
@ -86,11 +86,11 @@ public:
|
|||||||
using mutable_buffers_type = boost::asio::mutable_buffers_1;
|
using mutable_buffers_type = boost::asio::mutable_buffers_1;
|
||||||
|
|
||||||
/// Copy assignment (disallowed).
|
/// Copy assignment (disallowed).
|
||||||
basic_flat_streambuf&
|
basic_flat_buffer&
|
||||||
operator=(basic_flat_streambuf const&) = delete;
|
operator=(basic_flat_buffer const&) = delete;
|
||||||
|
|
||||||
/// Destructor.
|
/// Destructor.
|
||||||
~basic_flat_streambuf();
|
~basic_flat_buffer();
|
||||||
|
|
||||||
/** Move constructor.
|
/** Move constructor.
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ public:
|
|||||||
have a capacity of zero, an empty input sequence,
|
have a capacity of zero, an empty input sequence,
|
||||||
and an empty output sequence.
|
and an empty output sequence.
|
||||||
*/
|
*/
|
||||||
basic_flat_streambuf(basic_flat_streambuf&&);
|
basic_flat_buffer(basic_flat_buffer&&);
|
||||||
|
|
||||||
/** Move constructor.
|
/** Move constructor.
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ public:
|
|||||||
@param alloc The allocator to associate with the
|
@param alloc The allocator to associate with the
|
||||||
stream buffer.
|
stream buffer.
|
||||||
*/
|
*/
|
||||||
basic_flat_streambuf(basic_flat_streambuf&&,
|
basic_flat_buffer(basic_flat_buffer&&,
|
||||||
Allocator const& alloc);
|
Allocator const& alloc);
|
||||||
|
|
||||||
/** Copy constructor.
|
/** Copy constructor.
|
||||||
@ -123,7 +123,7 @@ public:
|
|||||||
The new object will have a copy of the input sequence
|
The new object will have a copy of the input sequence
|
||||||
and an empty output sequence.
|
and an empty output sequence.
|
||||||
*/
|
*/
|
||||||
basic_flat_streambuf(basic_flat_streambuf const&);
|
basic_flat_buffer(basic_flat_buffer const&);
|
||||||
|
|
||||||
/** Copy constructor.
|
/** Copy constructor.
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ public:
|
|||||||
@param alloc The allocator to associate with the
|
@param alloc The allocator to associate with the
|
||||||
stream buffer.
|
stream buffer.
|
||||||
*/
|
*/
|
||||||
basic_flat_streambuf(basic_flat_streambuf const&,
|
basic_flat_buffer(basic_flat_buffer const&,
|
||||||
Allocator const& alloc);
|
Allocator const& alloc);
|
||||||
|
|
||||||
/** Copy constructor.
|
/** Copy constructor.
|
||||||
@ -142,8 +142,8 @@ public:
|
|||||||
and an empty output sequence.
|
and an empty output sequence.
|
||||||
*/
|
*/
|
||||||
template<class OtherAlloc>
|
template<class OtherAlloc>
|
||||||
basic_flat_streambuf(
|
basic_flat_buffer(
|
||||||
basic_flat_streambuf<OtherAlloc> const&);
|
basic_flat_buffer<OtherAlloc> const&);
|
||||||
|
|
||||||
/** Copy constructor.
|
/** Copy constructor.
|
||||||
|
|
||||||
@ -154,8 +154,8 @@ public:
|
|||||||
stream buffer.
|
stream buffer.
|
||||||
*/
|
*/
|
||||||
template<class OtherAlloc>
|
template<class OtherAlloc>
|
||||||
basic_flat_streambuf(
|
basic_flat_buffer(
|
||||||
basic_flat_streambuf<OtherAlloc> const&,
|
basic_flat_buffer<OtherAlloc> const&,
|
||||||
Allocator const& alloc);
|
Allocator const& alloc);
|
||||||
|
|
||||||
/** Construct a flat stream buffer.
|
/** Construct a flat stream buffer.
|
||||||
@ -169,7 +169,7 @@ public:
|
|||||||
possible value of `std::size_t` is used.
|
possible value of `std::size_t` is used.
|
||||||
*/
|
*/
|
||||||
explicit
|
explicit
|
||||||
basic_flat_streambuf(std::size_t limit = (
|
basic_flat_buffer(std::size_t limit = (
|
||||||
std::numeric_limits<std::size_t>::max)());
|
std::numeric_limits<std::size_t>::max)());
|
||||||
|
|
||||||
/** Construct a flat stream buffer.
|
/** Construct a flat stream buffer.
|
||||||
@ -185,7 +185,7 @@ public:
|
|||||||
that can be allocated. If unspecified, the largest
|
that can be allocated. If unspecified, the largest
|
||||||
possible value of `std::size_t` is used.
|
possible value of `std::size_t` is used.
|
||||||
*/
|
*/
|
||||||
basic_flat_streambuf(Allocator const& alloc,
|
basic_flat_buffer(Allocator const& alloc,
|
||||||
std::size_t limit = (
|
std::size_t limit = (
|
||||||
std::numeric_limits<std::size_t>::max)());
|
std::numeric_limits<std::size_t>::max)());
|
||||||
|
|
||||||
@ -287,24 +287,24 @@ public:
|
|||||||
template<class OtherAlloc>
|
template<class OtherAlloc>
|
||||||
friend
|
friend
|
||||||
std::size_t
|
std::size_t
|
||||||
read_size_helper(basic_flat_streambuf<
|
read_size_helper(basic_flat_buffer<
|
||||||
OtherAlloc> const&, std::size_t);
|
OtherAlloc> const&, std::size_t);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void
|
void
|
||||||
move_from(basic_flat_streambuf& other);
|
move_from(basic_flat_buffer& other);
|
||||||
|
|
||||||
template<class OtherAlloc>
|
template<class OtherAlloc>
|
||||||
void
|
void
|
||||||
copy_from(basic_flat_streambuf<
|
copy_from(basic_flat_buffer<
|
||||||
OtherAlloc> const& other);
|
OtherAlloc> const& other);
|
||||||
};
|
};
|
||||||
|
|
||||||
using flat_streambuf =
|
using flat_buffer =
|
||||||
basic_flat_streambuf<std::allocator<char>>;
|
basic_flat_buffer<std::allocator<char>>;
|
||||||
|
|
||||||
} // beast
|
} // beast
|
||||||
|
|
||||||
#include <beast/core/impl/flat_streambuf.ipp>
|
#include <beast/core/impl/flat_buffer.ipp>
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -5,8 +5,8 @@
|
|||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef BEAST_IMPL_FLAT_STREAMBUF_HPP
|
#ifndef BEAST_IMPL_FLAT_BUFFER_HPP
|
||||||
#define BEAST_IMPL_FLAT_STREAMBUF_HPP
|
#define BEAST_IMPL_FLAT_BUFFER_HPP
|
||||||
|
|
||||||
#include <boost/assert.hpp>
|
#include <boost/assert.hpp>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
@ -37,8 +37,8 @@ next_pow2(std::size_t x)
|
|||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
void
|
void
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
move_from(basic_flat_streambuf& other)
|
move_from(basic_flat_buffer& other)
|
||||||
{
|
{
|
||||||
p_ = other.p_;
|
p_ = other.p_;
|
||||||
in_ = other.in_;
|
in_ = other.in_;
|
||||||
@ -56,8 +56,8 @@ move_from(basic_flat_streambuf& other)
|
|||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
template<class OtherAlloc>
|
template<class OtherAlloc>
|
||||||
void
|
void
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
copy_from(basic_flat_streambuf<
|
copy_from(basic_flat_buffer<
|
||||||
OtherAlloc> const& other)
|
OtherAlloc> const& other)
|
||||||
{
|
{
|
||||||
max_ = other.max_;
|
max_ = other.max_;
|
||||||
@ -81,8 +81,8 @@ copy_from(basic_flat_streambuf<
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
~basic_flat_streambuf()
|
~basic_flat_buffer()
|
||||||
{
|
{
|
||||||
if(p_)
|
if(p_)
|
||||||
alloc_traits::deallocate(
|
alloc_traits::deallocate(
|
||||||
@ -90,8 +90,8 @@ basic_flat_streambuf<Allocator>::
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
basic_flat_streambuf(basic_flat_streambuf&& other)
|
basic_flat_buffer(basic_flat_buffer&& other)
|
||||||
: detail::empty_base_optimization<
|
: detail::empty_base_optimization<
|
||||||
allocator_type>(std::move(other.member()))
|
allocator_type>(std::move(other.member()))
|
||||||
{
|
{
|
||||||
@ -99,8 +99,8 @@ basic_flat_streambuf(basic_flat_streambuf&& other)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
basic_flat_streambuf(basic_flat_streambuf&& other,
|
basic_flat_buffer(basic_flat_buffer&& other,
|
||||||
Allocator const& alloc)
|
Allocator const& alloc)
|
||||||
: detail::empty_base_optimization<
|
: detail::empty_base_optimization<
|
||||||
allocator_type>(alloc)
|
allocator_type>(alloc)
|
||||||
@ -114,9 +114,9 @@ basic_flat_streambuf(basic_flat_streambuf&& other,
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
basic_flat_streambuf(
|
basic_flat_buffer(
|
||||||
basic_flat_streambuf const& other)
|
basic_flat_buffer const& other)
|
||||||
: detail::empty_base_optimization<allocator_type>(
|
: detail::empty_base_optimization<allocator_type>(
|
||||||
alloc_traits::select_on_container_copy_construction(
|
alloc_traits::select_on_container_copy_construction(
|
||||||
other.member()))
|
other.member()))
|
||||||
@ -125,9 +125,9 @@ basic_flat_streambuf(
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
basic_flat_streambuf(
|
basic_flat_buffer(
|
||||||
basic_flat_streambuf const& other,
|
basic_flat_buffer const& other,
|
||||||
Allocator const& alloc)
|
Allocator const& alloc)
|
||||||
: detail::empty_base_optimization<
|
: detail::empty_base_optimization<
|
||||||
allocator_type>(alloc)
|
allocator_type>(alloc)
|
||||||
@ -137,18 +137,18 @@ basic_flat_streambuf(
|
|||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
template<class OtherAlloc>
|
template<class OtherAlloc>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
basic_flat_streambuf(
|
basic_flat_buffer(
|
||||||
basic_flat_streambuf<OtherAlloc> const& other)
|
basic_flat_buffer<OtherAlloc> const& other)
|
||||||
{
|
{
|
||||||
copy_from(other);
|
copy_from(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
template<class OtherAlloc>
|
template<class OtherAlloc>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
basic_flat_streambuf(
|
basic_flat_buffer(
|
||||||
basic_flat_streambuf<OtherAlloc> const& other,
|
basic_flat_buffer<OtherAlloc> const& other,
|
||||||
Allocator const& alloc)
|
Allocator const& alloc)
|
||||||
: detail::empty_base_optimization<
|
: detail::empty_base_optimization<
|
||||||
allocator_type>(alloc)
|
allocator_type>(alloc)
|
||||||
@ -157,8 +157,8 @@ basic_flat_streambuf(
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
basic_flat_streambuf(std::size_t limit)
|
basic_flat_buffer(std::size_t limit)
|
||||||
: p_(nullptr)
|
: p_(nullptr)
|
||||||
, in_(nullptr)
|
, in_(nullptr)
|
||||||
, out_(nullptr)
|
, out_(nullptr)
|
||||||
@ -170,8 +170,8 @@ basic_flat_streambuf(std::size_t limit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
basic_flat_streambuf(Allocator const& alloc,
|
basic_flat_buffer(Allocator const& alloc,
|
||||||
std::size_t limit)
|
std::size_t limit)
|
||||||
: detail::empty_base_optimization<
|
: detail::empty_base_optimization<
|
||||||
allocator_type>(alloc)
|
allocator_type>(alloc)
|
||||||
@ -187,7 +187,7 @@ basic_flat_streambuf(Allocator const& alloc,
|
|||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
auto
|
auto
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
prepare(std::size_t n) ->
|
prepare(std::size_t n) ->
|
||||||
mutable_buffers_type
|
mutable_buffers_type
|
||||||
{
|
{
|
||||||
@ -212,7 +212,7 @@ prepare(std::size_t n) ->
|
|||||||
// enforce maximum capacity
|
// enforce maximum capacity
|
||||||
if(n > max_ - len)
|
if(n > max_ - len)
|
||||||
throw std::length_error{
|
throw std::length_error{
|
||||||
"flat_streambuf overflow"};
|
"basic_flat_buffer overflow"};
|
||||||
// allocate a new buffer
|
// allocate a new buffer
|
||||||
auto const new_size = (std::min)(max_,
|
auto const new_size = (std::min)(max_,
|
||||||
std::max<std::size_t>(
|
std::max<std::size_t>(
|
||||||
@ -237,7 +237,7 @@ prepare(std::size_t n) ->
|
|||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
void
|
void
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
consume(std::size_t n)
|
consume(std::size_t n)
|
||||||
{
|
{
|
||||||
if(n >= dist(in_, out_))
|
if(n >= dist(in_, out_))
|
||||||
@ -251,14 +251,14 @@ consume(std::size_t n)
|
|||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
void
|
void
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
reserve(std::size_t n)
|
reserve(std::size_t n)
|
||||||
{
|
{
|
||||||
if(n <= capacity())
|
if(n <= capacity())
|
||||||
return;
|
return;
|
||||||
if(n > max_)
|
if(n > max_)
|
||||||
throw std::length_error{
|
throw std::length_error{
|
||||||
"flat_streambuf overflow"};
|
"basic_flat_buffer overflow"};
|
||||||
auto const new_size = (std::min)(max_,
|
auto const new_size = (std::min)(max_,
|
||||||
std::max<std::size_t>(
|
std::max<std::size_t>(
|
||||||
detail::next_pow2(n), min_size));
|
detail::next_pow2(n), min_size));
|
||||||
@ -282,7 +282,7 @@ reserve(std::size_t n)
|
|||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
void
|
void
|
||||||
basic_flat_streambuf<Allocator>::
|
basic_flat_buffer<Allocator>::
|
||||||
shrink_to_fit()
|
shrink_to_fit()
|
||||||
{
|
{
|
||||||
auto const len = size();
|
auto const len = size();
|
||||||
@ -312,7 +312,7 @@ shrink_to_fit()
|
|||||||
|
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
std::size_t
|
std::size_t
|
||||||
read_size_helper(basic_flat_streambuf<
|
read_size_helper(basic_flat_buffer<
|
||||||
Allocator> const& fb, std::size_t max_size)
|
Allocator> const& fb, std::size_t max_size)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(max_size >= 1);
|
BOOST_ASSERT(max_size >= 1);
|
@ -190,10 +190,10 @@ enum class parse_state
|
|||||||
|
|
||||||
The parser is optimized for the case where the input buffer
|
The parser is optimized for the case where the input buffer
|
||||||
sequence consists of a single contiguous buffer. The
|
sequence consists of a single contiguous buffer. The
|
||||||
@ref beast::flat_streambuf class is provided, which guarantees
|
@ref beast::flat_buffer class is provided, which guarantees
|
||||||
that the input sequence of the stream buffer will be represented
|
that the input sequence of the stream buffer will be represented
|
||||||
by exactly one contiguous buffer. To ensure the optimum performance
|
by exactly one contiguous buffer. To ensure the optimum performance
|
||||||
of the parser, use @ref beast::flat_streambuf with HTTP algorithms
|
of the parser, use @ref beast::flat_buffer with HTTP algorithms
|
||||||
such as @ref beast::http::read, @ref beast::http::read_some,
|
such as @ref beast::http::read, @ref beast::http::read_some,
|
||||||
@ref beast::http::async_read, and @ref beast::http::async_read_some.
|
@ref beast::http::async_read, and @ref beast::http::async_read_some.
|
||||||
Alternatively, the caller may use custom techniques to ensure that
|
Alternatively, the caller may use custom techniques to ensure that
|
||||||
|
@ -25,7 +25,7 @@ unit-test core-tests :
|
|||||||
core/consuming_buffers.cpp
|
core/consuming_buffers.cpp
|
||||||
core/dynabuf_readstream.cpp
|
core/dynabuf_readstream.cpp
|
||||||
core/error.cpp
|
core/error.cpp
|
||||||
core/flat_streambuf.cpp
|
core/flat_buffer.cpp
|
||||||
core/handler_alloc.cpp
|
core/handler_alloc.cpp
|
||||||
core/handler_concepts.cpp
|
core/handler_concepts.cpp
|
||||||
core/handler_ptr.cpp
|
core/handler_ptr.cpp
|
||||||
|
@ -18,7 +18,7 @@ add_executable (core-tests
|
|||||||
consuming_buffers.cpp
|
consuming_buffers.cpp
|
||||||
dynabuf_readstream.cpp
|
dynabuf_readstream.cpp
|
||||||
error.cpp
|
error.cpp
|
||||||
flat_streambuf.cpp
|
flat_buffer.cpp
|
||||||
handler_alloc.cpp
|
handler_alloc.cpp
|
||||||
handler_concepts.cpp
|
handler_concepts.cpp
|
||||||
handler_ptr.cpp
|
handler_ptr.cpp
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
// Test that header file is self-contained.
|
// Test that header file is self-contained.
|
||||||
#include <beast/core/flat_streambuf.hpp>
|
#include <beast/core/flat_buffer.hpp>
|
||||||
|
|
||||||
#include "buffer_test.hpp"
|
#include "buffer_test.hpp"
|
||||||
#include <beast/core/ostream.hpp>
|
#include <beast/core/ostream.hpp>
|
||||||
@ -17,10 +17,10 @@
|
|||||||
|
|
||||||
namespace beast {
|
namespace beast {
|
||||||
|
|
||||||
static_assert(is_DynamicBuffer<flat_streambuf>::value,
|
static_assert(is_DynamicBuffer<flat_buffer>::value,
|
||||||
"DynamicBuffer requirements not met");
|
"DynamicBuffer requirements not met");
|
||||||
|
|
||||||
class flat_streambuf_test : public beast::unit_test::suite
|
class flat_buffer_test : public beast::unit_test::suite
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
template<class ConstBufferSequence>
|
template<class ConstBufferSequence>
|
||||||
@ -35,8 +35,8 @@ public:
|
|||||||
template<class Alloc1, class Alloc2>
|
template<class Alloc1, class Alloc2>
|
||||||
static
|
static
|
||||||
bool
|
bool
|
||||||
eq(basic_flat_streambuf<Alloc1> const& sb1,
|
eq(basic_flat_buffer<Alloc1> const& sb1,
|
||||||
basic_flat_streambuf<Alloc2> const& sb2)
|
basic_flat_buffer<Alloc2> const& sb2)
|
||||||
{
|
{
|
||||||
return to_string(sb1.data()) == to_string(sb2.data());
|
return to_string(sb1.data()) == to_string(sb2.data());
|
||||||
}
|
}
|
||||||
@ -50,13 +50,13 @@ public:
|
|||||||
Equal, Assign, Move, Swap, Select>;
|
Equal, Assign, Move, Swap, Select>;
|
||||||
{
|
{
|
||||||
using boost::asio::buffer_size;
|
using boost::asio::buffer_size;
|
||||||
basic_flat_streambuf<allocator> b1{10};
|
basic_flat_buffer<allocator> b1{10};
|
||||||
BEAST_EXPECT(b1.size() == 0);
|
BEAST_EXPECT(b1.size() == 0);
|
||||||
BEAST_EXPECT(b1.capacity() == 0);
|
BEAST_EXPECT(b1.capacity() == 0);
|
||||||
BEAST_EXPECT(b1.max_size() == 10);
|
BEAST_EXPECT(b1.max_size() == 10);
|
||||||
b1.prepare(1);
|
b1.prepare(1);
|
||||||
b1.commit(1);
|
b1.commit(1);
|
||||||
basic_flat_streambuf<allocator> b2{std::move(b1)};
|
basic_flat_buffer<allocator> b2{std::move(b1)};
|
||||||
BEAST_EXPECT(b1.capacity() == 0);
|
BEAST_EXPECT(b1.capacity() == 0);
|
||||||
BEAST_EXPECT(b1.max_size() == 10);
|
BEAST_EXPECT(b1.max_size() == 10);
|
||||||
BEAST_EXPECT(b2.size() == 1);
|
BEAST_EXPECT(b2.size() == 1);
|
||||||
@ -65,29 +65,29 @@ public:
|
|||||||
BEAST_EXPECT(buffer_size(b1.prepare(1)) == 1);
|
BEAST_EXPECT(buffer_size(b1.prepare(1)) == 1);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
basic_flat_streambuf<allocator> b1{10};
|
basic_flat_buffer<allocator> b1{10};
|
||||||
basic_flat_streambuf<allocator> b2{std::move(b1), allocator{}};
|
basic_flat_buffer<allocator> b2{std::move(b1), allocator{}};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
basic_flat_streambuf<allocator> b1{10};
|
basic_flat_buffer<allocator> b1{10};
|
||||||
basic_flat_streambuf<allocator> b2{b1};
|
basic_flat_buffer<allocator> b2{b1};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
basic_flat_streambuf<allocator> b1{10};
|
basic_flat_buffer<allocator> b1{10};
|
||||||
basic_flat_streambuf<allocator> b2{b1, allocator{}};
|
basic_flat_buffer<allocator> b2{b1, allocator{}};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
flat_streambuf b1{10};
|
flat_buffer b1{10};
|
||||||
b1.prepare(1);
|
b1.prepare(1);
|
||||||
b1.commit(1);
|
b1.commit(1);
|
||||||
basic_flat_streambuf<allocator> b2{b1};
|
basic_flat_buffer<allocator> b2{b1};
|
||||||
BEAST_EXPECT(b2.size() == 1);
|
BEAST_EXPECT(b2.size() == 1);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
basic_flat_streambuf<allocator> b1{10};
|
basic_flat_buffer<allocator> b1{10};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
basic_flat_streambuf<allocator> b1{allocator{}, 10};
|
basic_flat_buffer<allocator> b1{allocator{}, 10};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,14 +136,14 @@ public:
|
|||||||
//
|
//
|
||||||
|
|
||||||
{
|
{
|
||||||
flat_streambuf b{10};
|
flat_buffer b{10};
|
||||||
b.prepare(1);
|
b.prepare(1);
|
||||||
b.commit(1);
|
b.commit(1);
|
||||||
b.reserve(2);
|
b.reserve(2);
|
||||||
BEAST_EXPECT(b.size() == 1);
|
BEAST_EXPECT(b.size() == 1);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
flat_streambuf b{10};
|
flat_buffer b{10};
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
b.reserve(11);
|
b.reserve(11);
|
||||||
@ -162,35 +162,35 @@ public:
|
|||||||
using boost::asio::buffer;
|
using boost::asio::buffer;
|
||||||
using boost::asio::buffer_copy;
|
using boost::asio::buffer_copy;
|
||||||
{
|
{
|
||||||
flat_streambuf fb{10};
|
flat_buffer b{10};
|
||||||
BEAST_EXPECT(fb.max_size() == 10);
|
BEAST_EXPECT(b.max_size() == 10);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
flat_streambuf fb{1024};
|
flat_buffer b{1024};
|
||||||
BEAST_EXPECT(fb.max_size() == 1024);
|
BEAST_EXPECT(b.max_size() == 1024);
|
||||||
}
|
}
|
||||||
std::string const s = "Hello, world!";
|
std::string const s = "Hello, world!";
|
||||||
for(std::size_t i = 1; i < s.size() - 1; ++i)
|
for(std::size_t i = 1; i < s.size() - 1; ++i)
|
||||||
{
|
{
|
||||||
flat_streambuf fb{1024};
|
flat_buffer b{1024};
|
||||||
fb.commit(buffer_copy(
|
b.commit(buffer_copy(
|
||||||
fb.prepare(i), buffer(s)));
|
b.prepare(i), buffer(s)));
|
||||||
fb.commit(buffer_copy(
|
b.commit(buffer_copy(
|
||||||
fb.prepare(s.size() - i),
|
b.prepare(s.size() - i),
|
||||||
buffer(s.data() + i, s.size() - i)));
|
buffer(s.data() + i, s.size() - i)));
|
||||||
BEAST_EXPECT(to_string(fb.data()) == s);
|
BEAST_EXPECT(to_string(b.data()) == s);
|
||||||
{
|
{
|
||||||
flat_streambuf fb2{fb};
|
flat_buffer b2{b};
|
||||||
BEAST_EXPECT(eq(fb2, fb));
|
BEAST_EXPECT(eq(b2, b));
|
||||||
flat_streambuf fb3{std::move(fb2)};
|
flat_buffer b3{std::move(b2)};
|
||||||
BEAST_EXPECT(eq(fb3, fb));
|
BEAST_EXPECT(eq(b3, b));
|
||||||
BEAST_EXPECT(! eq(fb2, fb3));
|
BEAST_EXPECT(! eq(b2, b3));
|
||||||
BEAST_EXPECT(fb2.size() == 0);
|
BEAST_EXPECT(b2.size() == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
using alloc_type = std::allocator<double>;
|
using alloc_type = std::allocator<double>;
|
||||||
using type =
|
using type =
|
||||||
basic_flat_streambuf<alloc_type>;
|
basic_flat_buffer<alloc_type>;
|
||||||
alloc_type alloc;
|
alloc_type alloc;
|
||||||
{
|
{
|
||||||
type fba{alloc, 1};
|
type fba{alloc, 1};
|
||||||
@ -201,18 +201,18 @@ public:
|
|||||||
BEAST_EXPECT(fba.max_size() == 1024);
|
BEAST_EXPECT(fba.max_size() == 1024);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type fb2{fb};
|
type fb2{b};
|
||||||
BEAST_EXPECT(eq(fb2, fb));
|
BEAST_EXPECT(eq(fb2, b));
|
||||||
type fb3{std::move(fb2)};
|
type fb3{std::move(fb2)};
|
||||||
BEAST_EXPECT(eq(fb3, fb));
|
BEAST_EXPECT(eq(fb3, b));
|
||||||
BEAST_EXPECT(! eq(fb2, fb3));
|
BEAST_EXPECT(! eq(fb2, fb3));
|
||||||
BEAST_EXPECT(fb2.size() == 0);
|
BEAST_EXPECT(fb2.size() == 0);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type fb2{fb, alloc};
|
type fb2{b, alloc};
|
||||||
BEAST_EXPECT(eq(fb2, fb));
|
BEAST_EXPECT(eq(fb2, b));
|
||||||
type fb3{std::move(fb2), alloc};
|
type fb3{std::move(fb2), alloc};
|
||||||
BEAST_EXPECT(eq(fb3, fb));
|
BEAST_EXPECT(eq(fb3, b));
|
||||||
BEAST_EXPECT(! eq(fb2, fb3));
|
BEAST_EXPECT(! eq(fb2, fb3));
|
||||||
BEAST_EXPECT(fb2.size() == 0);
|
BEAST_EXPECT(fb2.size() == 0);
|
||||||
}
|
}
|
||||||
@ -224,57 +224,57 @@ public:
|
|||||||
{
|
{
|
||||||
using boost::asio::buffer_size;
|
using boost::asio::buffer_size;
|
||||||
|
|
||||||
flat_streambuf fb{100};
|
flat_buffer b{100};
|
||||||
BEAST_EXPECT(fb.size() == 0);
|
BEAST_EXPECT(b.size() == 0);
|
||||||
BEAST_EXPECT(fb.capacity() == 0);
|
BEAST_EXPECT(b.capacity() == 0);
|
||||||
|
|
||||||
BEAST_EXPECT(buffer_size(fb.prepare(100)) == 100);
|
BEAST_EXPECT(buffer_size(b.prepare(100)) == 100);
|
||||||
BEAST_EXPECT(fb.size() == 0);
|
BEAST_EXPECT(b.size() == 0);
|
||||||
BEAST_EXPECT(fb.capacity() > 0);
|
BEAST_EXPECT(b.capacity() > 0);
|
||||||
|
|
||||||
fb.commit(20);
|
b.commit(20);
|
||||||
BEAST_EXPECT(fb.size() == 20);
|
BEAST_EXPECT(b.size() == 20);
|
||||||
BEAST_EXPECT(fb.capacity() == 100);
|
BEAST_EXPECT(b.capacity() == 100);
|
||||||
|
|
||||||
fb.consume(5);
|
b.consume(5);
|
||||||
BEAST_EXPECT(fb.size() == 15);
|
BEAST_EXPECT(b.size() == 15);
|
||||||
BEAST_EXPECT(fb.capacity() == 100);
|
BEAST_EXPECT(b.capacity() == 100);
|
||||||
|
|
||||||
fb.prepare(80);
|
b.prepare(80);
|
||||||
fb.commit(80);
|
b.commit(80);
|
||||||
BEAST_EXPECT(fb.size() == 95);
|
BEAST_EXPECT(b.size() == 95);
|
||||||
BEAST_EXPECT(fb.capacity() == 100);
|
BEAST_EXPECT(b.capacity() == 100);
|
||||||
|
|
||||||
fb.shrink_to_fit();
|
b.shrink_to_fit();
|
||||||
BEAST_EXPECT(fb.size() == 95);
|
BEAST_EXPECT(b.size() == 95);
|
||||||
BEAST_EXPECT(fb.capacity() == 95);
|
BEAST_EXPECT(b.capacity() == 95);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
testPrepare()
|
testPrepare()
|
||||||
{
|
{
|
||||||
flat_streambuf fb{100};
|
flat_buffer b{100};
|
||||||
fb.prepare(20);
|
b.prepare(20);
|
||||||
BEAST_EXPECT(fb.capacity() == 100);
|
BEAST_EXPECT(b.capacity() == 100);
|
||||||
fb.commit(10);
|
b.commit(10);
|
||||||
BEAST_EXPECT(fb.capacity() == 100);
|
BEAST_EXPECT(b.capacity() == 100);
|
||||||
fb.consume(4);
|
b.consume(4);
|
||||||
BEAST_EXPECT(fb.capacity() == 100);
|
BEAST_EXPECT(b.capacity() == 100);
|
||||||
fb.prepare(14);
|
b.prepare(14);
|
||||||
BEAST_EXPECT(fb.size() == 6);
|
BEAST_EXPECT(b.size() == 6);
|
||||||
BEAST_EXPECT(fb.capacity() == 100);
|
BEAST_EXPECT(b.capacity() == 100);
|
||||||
fb.consume(10);
|
b.consume(10);
|
||||||
BEAST_EXPECT(fb.size() == 0);
|
BEAST_EXPECT(b.size() == 0);
|
||||||
BEAST_EXPECT(fb.capacity() == 100);
|
BEAST_EXPECT(b.capacity() == 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
testMax()
|
testMax()
|
||||||
{
|
{
|
||||||
flat_streambuf fb{1};
|
flat_buffer b{1};
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
fb.prepare(2);
|
b.prepare(2);
|
||||||
fail("", __FILE__, __LINE__);
|
fail("", __FILE__, __LINE__);
|
||||||
}
|
}
|
||||||
catch(std::length_error const&)
|
catch(std::length_error const&)
|
||||||
@ -296,6 +296,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
BEAST_DEFINE_TESTSUITE(flat_streambuf,core,beast);
|
BEAST_DEFINE_TESTSUITE(flat_buffer,core,beast);
|
||||||
|
|
||||||
} // beast
|
} // beast
|
@ -5,7 +5,7 @@
|
|||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <beast/core/flat_streambuf.hpp>
|
#include <beast/core/flat_buffer.hpp>
|
||||||
#include <beast/core/prepare_buffers.hpp>
|
#include <beast/core/prepare_buffers.hpp>
|
||||||
#include <beast/http/chunk_encode.hpp>
|
#include <beast/http/chunk_encode.hpp>
|
||||||
#include <beast/http/read.hpp>
|
#include <beast/http/read.hpp>
|
||||||
@ -104,7 +104,7 @@ public:
|
|||||||
"*"
|
"*"
|
||||||
};
|
};
|
||||||
message<true, direct_body, fields> m;
|
message<true, direct_body, fields> m;
|
||||||
flat_streambuf b{1024};
|
flat_buffer b{1024};
|
||||||
read(is, b, m);
|
read(is, b, m);
|
||||||
BEAST_EXPECT(m.body == "*");
|
BEAST_EXPECT(m.body == "*");
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ public:
|
|||||||
"*"
|
"*"
|
||||||
};
|
};
|
||||||
message<false, direct_body, fields> m;
|
message<false, direct_body, fields> m;
|
||||||
flat_streambuf b{20};
|
flat_buffer b{20};
|
||||||
read(is, b, m);
|
read(is, b, m);
|
||||||
BEAST_EXPECT(m.body == "*");
|
BEAST_EXPECT(m.body == "*");
|
||||||
}
|
}
|
||||||
@ -133,7 +133,7 @@ public:
|
|||||||
"0\r\n\r\n"
|
"0\r\n\r\n"
|
||||||
};
|
};
|
||||||
message<true, direct_body, fields> m;
|
message<true, direct_body, fields> m;
|
||||||
flat_streambuf b{100};
|
flat_buffer b{100};
|
||||||
read(is, b, m);
|
read(is, b, m);
|
||||||
BEAST_EXPECT(m.body == "*");
|
BEAST_EXPECT(m.body == "*");
|
||||||
}
|
}
|
||||||
@ -201,7 +201,7 @@ public:
|
|||||||
"*"
|
"*"
|
||||||
};
|
};
|
||||||
message<true, indirect_body, fields> m;
|
message<true, indirect_body, fields> m;
|
||||||
flat_streambuf b{1024};
|
flat_buffer b{1024};
|
||||||
read(is, b, m);
|
read(is, b, m);
|
||||||
BEAST_EXPECT(m.body == "*");
|
BEAST_EXPECT(m.body == "*");
|
||||||
}
|
}
|
||||||
@ -214,7 +214,7 @@ public:
|
|||||||
"*"
|
"*"
|
||||||
};
|
};
|
||||||
message<false, indirect_body, fields> m;
|
message<false, indirect_body, fields> m;
|
||||||
flat_streambuf b{20};
|
flat_buffer b{20};
|
||||||
read(is, b, m);
|
read(is, b, m);
|
||||||
BEAST_EXPECT(m.body == "*");
|
BEAST_EXPECT(m.body == "*");
|
||||||
}
|
}
|
||||||
@ -231,7 +231,7 @@ public:
|
|||||||
"0\r\n\r\n"
|
"0\r\n\r\n"
|
||||||
};
|
};
|
||||||
message<true, indirect_body, fields> m;
|
message<true, indirect_body, fields> m;
|
||||||
flat_streambuf b{1024};
|
flat_buffer b{1024};
|
||||||
read(is, b, m);
|
read(is, b, m);
|
||||||
BEAST_EXPECT(m.body == "*");
|
BEAST_EXPECT(m.body == "*");
|
||||||
}
|
}
|
||||||
@ -253,7 +253,7 @@ public:
|
|||||||
"*****"
|
"*****"
|
||||||
};
|
};
|
||||||
header_parser<true, fields> p;
|
header_parser<true, fields> p;
|
||||||
flat_streambuf b{38};
|
flat_buffer b{38};
|
||||||
auto const bytes_used =
|
auto const bytes_used =
|
||||||
read_some(is, b, p);
|
read_some(is, b, p);
|
||||||
b.consume(bytes_used);
|
b.consume(bytes_used);
|
||||||
@ -272,7 +272,7 @@ public:
|
|||||||
"*****"
|
"*****"
|
||||||
};
|
};
|
||||||
header_parser<false, fields> p;
|
header_parser<false, fields> p;
|
||||||
flat_streambuf b{20};
|
flat_buffer b{20};
|
||||||
auto const bytes_used =
|
auto const bytes_used =
|
||||||
read_some(is, b, p);
|
read_some(is, b, p);
|
||||||
b.consume(bytes_used);
|
b.consume(bytes_used);
|
||||||
@ -303,7 +303,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
header_parser<true, fields> p;
|
header_parser<true, fields> p;
|
||||||
flat_streambuf b{128};
|
flat_buffer b{128};
|
||||||
auto const bytes_used =
|
auto const bytes_used =
|
||||||
read_some(is, b, p);
|
read_some(is, b, p);
|
||||||
b.consume(bytes_used);
|
b.consume(bytes_used);
|
||||||
@ -335,7 +335,7 @@ public:
|
|||||||
DynamicBuffer& b,
|
DynamicBuffer& b,
|
||||||
SyncReadStream& in)
|
SyncReadStream& in)
|
||||||
{
|
{
|
||||||
flat_streambuf buffer{4096}; // 4K limit
|
flat_buffer buffer{4096}; // 4K limit
|
||||||
header_parser<isRequest, fields> parser;
|
header_parser<isRequest, fields> parser;
|
||||||
error_code ec;
|
error_code ec;
|
||||||
do
|
do
|
||||||
@ -397,7 +397,7 @@ public:
|
|||||||
3 // max_read
|
3 // max_read
|
||||||
};
|
};
|
||||||
test::string_ostream os{ios_};
|
test::string_ostream os{ios_};
|
||||||
flat_streambuf b{16};
|
flat_buffer b{16};
|
||||||
relay<true>(os, b, is);
|
relay<true>(os, b, is);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,7 +410,7 @@ public:
|
|||||||
3 // max_read
|
3 // max_read
|
||||||
};
|
};
|
||||||
test::string_ostream os{ios_};
|
test::string_ostream os{ios_};
|
||||||
flat_streambuf b{16};
|
flat_buffer b{16};
|
||||||
relay<false>(os, b, is);
|
relay<false>(os, b, is);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +427,7 @@ public:
|
|||||||
2 // max_read
|
2 // max_read
|
||||||
};
|
};
|
||||||
test::string_ostream os{ios_};
|
test::string_ostream os{ios_};
|
||||||
flat_streambuf b{16};
|
flat_buffer b{16};
|
||||||
relay<true>(os, b, is);
|
relay<true>(os, b, is);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -444,7 +444,7 @@ public:
|
|||||||
void
|
void
|
||||||
doFixedRead(SyncReadStream& stream, BodyCallback const& cb)
|
doFixedRead(SyncReadStream& stream, BodyCallback const& cb)
|
||||||
{
|
{
|
||||||
flat_streambuf buffer{4096}; // 4K limit
|
flat_buffer buffer{4096}; // 4K limit
|
||||||
header_parser<isRequest, fields> parser;
|
header_parser<isRequest, fields> parser;
|
||||||
std::size_t bytes_used;
|
std::size_t bytes_used;
|
||||||
bytes_used = read_some(stream, buffer, parser);
|
bytes_used = read_some(stream, buffer, parser);
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// Test that header file is self-contained.
|
// Test that header file is self-contained.
|
||||||
#include <beast/http/header_parser.hpp>
|
#include <beast/http/header_parser.hpp>
|
||||||
|
|
||||||
#include <beast/core/flat_streambuf.hpp>
|
#include <beast/core/flat_buffer.hpp>
|
||||||
#include <beast/http/read.hpp>
|
#include <beast/http/read.hpp>
|
||||||
#include <beast/unit_test/suite.hpp>
|
#include <beast/unit_test/suite.hpp>
|
||||||
#include <beast/test/string_istream.hpp>
|
#include <beast/test/string_istream.hpp>
|
||||||
@ -31,7 +31,7 @@ public:
|
|||||||
"User-Agent: test\r\n"
|
"User-Agent: test\r\n"
|
||||||
"\r\n"
|
"\r\n"
|
||||||
};
|
};
|
||||||
flat_streambuf db{1024};
|
flat_buffer db{1024};
|
||||||
header_parser<true, fields> p;
|
header_parser<true, fields> p;
|
||||||
read_some(is, db, p);
|
read_some(is, db, p);
|
||||||
BEAST_EXPECT(p.is_complete());
|
BEAST_EXPECT(p.is_complete());
|
||||||
@ -44,7 +44,7 @@ public:
|
|||||||
"\r\n"
|
"\r\n"
|
||||||
"*"
|
"*"
|
||||||
};
|
};
|
||||||
flat_streambuf db{1024};
|
flat_buffer db{1024};
|
||||||
header_parser<true, fields> p;
|
header_parser<true, fields> p;
|
||||||
read_some(is, db, p);
|
read_some(is, db, p);
|
||||||
BEAST_EXPECT(! p.is_complete());
|
BEAST_EXPECT(! p.is_complete());
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <beast/test/string_istream.hpp>
|
#include <beast/test/string_istream.hpp>
|
||||||
#include <beast/test/string_ostream.hpp>
|
#include <beast/test/string_ostream.hpp>
|
||||||
#include <beast/test/yield_to.hpp>
|
#include <beast/test/yield_to.hpp>
|
||||||
#include <beast/core/flat_streambuf.hpp>
|
#include <beast/core/flat_buffer.hpp>
|
||||||
#include <beast/core/multi_buffer.hpp>
|
#include <beast/core/multi_buffer.hpp>
|
||||||
#include <beast/http/header_parser.hpp>
|
#include <beast/http/header_parser.hpp>
|
||||||
#include <beast/http/read.hpp>
|
#include <beast/http/read.hpp>
|
||||||
@ -39,7 +39,7 @@ public:
|
|||||||
#if 0
|
#if 0
|
||||||
multi_buffer dynabuf;
|
multi_buffer dynabuf;
|
||||||
#else
|
#else
|
||||||
flat_streambuf dynabuf{1024};
|
flat_buffer dynabuf{1024};
|
||||||
#endif
|
#endif
|
||||||
message<isRequest, string_body, fields> m;
|
message<isRequest, string_body, fields> m;
|
||||||
read(ss, dynabuf, m, ec);
|
read(ss, dynabuf, m, ec);
|
||||||
@ -124,7 +124,7 @@ public:
|
|||||||
"Content-Length: 1\r\n"
|
"Content-Length: 1\r\n"
|
||||||
"\r\n"
|
"\r\n"
|
||||||
"*"};
|
"*"};
|
||||||
flat_streambuf b{1024};
|
flat_buffer b{1024};
|
||||||
message_parser<true, string_body, fields> p;
|
message_parser<true, string_body, fields> p;
|
||||||
read(is, b, p, ec);
|
read(is, b, p, ec);
|
||||||
auto const& m = p.get();
|
auto const& m = p.get();
|
||||||
|
Reference in New Issue
Block a user