Line data Source code
1 : // 2 : // Copyright (c) 2021 Vinnie Falco (vinnie.falco@gmail.com) 3 : // 4 : // Distributed under the Boost Software License, Version 1.0. (See accompanying 5 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 : // 7 : // Official repository: https://github.com/CPPAlliance/http_proto 8 : // 9 : 10 : #ifndef BOOST_HTTP_PROTO_STRING_BODY_HPP 11 : #define BOOST_HTTP_PROTO_STRING_BODY_HPP 12 : 13 : #include <boost/http_proto/detail/config.hpp> 14 : #include <boost/buffers/const_buffer.hpp> 15 : #include <string> 16 : #include <utility> 17 : 18 : namespace boost { 19 : namespace http_proto { 20 : 21 : class string_body 22 : { 23 : std::string s_; 24 : buffers::const_buffer cb_; 25 : 26 : public: 27 : using value_type = buffers::const_buffer; 28 : using const_iterator = buffers::const_buffer const*; 29 : 30 3 : string_body( 31 : string_body&& other) noexcept 32 3 : : s_(std::move(other.s_)) 33 3 : , cb_(s_.data(), s_.size()) 34 : { 35 3 : other.cb_ = {}; 36 3 : } 37 : 38 : string_body( 39 : string_body const& other) = delete; 40 : 41 3 : string_body( 42 : std::string s) noexcept 43 3 : : s_(std::move(s)) 44 3 : , cb_(s_.data(), s_.size()) 45 : { 46 3 : } 47 : 48 : const_iterator 49 6 : begin() const noexcept 50 : { 51 6 : return &cb_; 52 : } 53 : 54 : const_iterator 55 6 : end() const noexcept 56 : { 57 6 : return &cb_ + 1; 58 : } 59 : }; 60 : 61 : //------------------------------------------------ 62 : 63 : } // http_proto 64 : } // boost 65 : 66 : #endif