From 6108cf3eb7aa29d201f8829fa44a6ec2a31c8609 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Sun, 29 Apr 2018 15:01:22 -0700 Subject: [PATCH] Add flat_stream to experimental: This adds a new stream wrapper class template designed to address a performance shortcoming of boost::asio::ssl::stream. --- CHANGELOG.md | 6 + doc/qbk/02_examples.qbk | 10 - doc/qbk/quickref.xml | 20 + doc/source.dox | 1 + example/advanced/server-flex/CMakeLists.txt | 1 - example/common/flat_stream.hpp | 506 ------------------ example/common/ssl_stream.hpp | 329 ------------ .../experimental/core/detail/flat_stream.hpp | 64 +++ .../beast/experimental/core/flat_stream.hpp | 353 ++++++++++++ .../experimental/core/impl/flat_stream.ipp | 304 +++++++++++ test/beast/CMakeLists.txt | 1 + test/beast/Jamfile | 2 + test/beast/experimental/CMakeLists.txt | 23 + test/beast/experimental/Jamfile | 25 + .../experimental}/flat_stream.cpp | 4 +- test/example/common/CMakeLists.txt | 1 - test/example/common/Jamfile | 1 - 17 files changed, 801 insertions(+), 850 deletions(-) delete mode 100644 example/common/flat_stream.hpp delete mode 100644 example/common/ssl_stream.hpp create mode 100644 include/boost/beast/experimental/core/detail/flat_stream.hpp create mode 100644 include/boost/beast/experimental/core/flat_stream.hpp create mode 100644 include/boost/beast/experimental/core/impl/flat_stream.ipp create mode 100644 test/beast/experimental/CMakeLists.txt create mode 100644 test/beast/experimental/Jamfile rename test/{example/common => beast/experimental}/flat_stream.cpp (95%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f4d426d..f86b9fac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +Version 170: + +* Add flat_stream to experimental + +-------------------------------------------------------------------------------- + Version 169: * Use buffers_to_string in tests diff --git a/doc/qbk/02_examples.qbk b/doc/qbk/02_examples.qbk index 5b757206..22d0fb14 100644 --- a/doc/qbk/02_examples.qbk +++ b/doc/qbk/02_examples.qbk @@ -216,16 +216,6 @@ listed here along with a description of their use: in the documentation. It is used by the "flex" servers which support both plain and SSL sessions on the same port. ] -][ - [[source_file example/common/flat_stream.hpp]] - [ - This wrapper flattens buffer sequences having length greater than 1 - and total size below a predefined amount, using a dynamic memory - allocation. It is primarily designed to overcome a performance - limitation of the current Boost.Asio version of `ssl::stream`, which - does not use OpenSSL's scatter/gather interface for its primitive - read and write operations. - ] ][ [[source_file example/common/root_certificates.hpp]] [ diff --git a/doc/qbk/quickref.xml b/doc/qbk/quickref.xml index f3681dc7..91c92c1a 100644 --- a/doc/qbk/quickref.xml +++ b/doc/qbk/quickref.xml @@ -284,6 +284,26 @@ + + + + + + Experimental + + + + + + + Classes + + flat_stream + + + + +