GCC Code Coverage Report


Directory: libs/http_proto/
File: boost/http_proto/message_view_base.hpp
Date: 2024-05-06 07:04:33
Exec Total Coverage
Lines: 14 14 100.0%
Functions: 6 6 100.0%
Branches: 1 2 50.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2021 Vinnie Falco (vinnie.falco@gmail.com)
3 // Copyright (c) 2024 Christian Mazakas
4 //
5 // Distributed under the Boost Software License, Version 1.0. (See accompanying
6 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 //
8 // Official repository: https://github.com/cppalliance/http_proto
9 //
10
11 #ifndef BOOST_HTTP_PROTO_MESSAGE_VIEW_BASE_HPP
12 #define BOOST_HTTP_PROTO_MESSAGE_VIEW_BASE_HPP
13
14 #include <boost/http_proto/detail/config.hpp>
15 #include <boost/http_proto/fields_view_base.hpp>
16 #include <boost/url/grammar/recycled.hpp>
17 #include <boost/url/grammar/type_traits.hpp>
18 #include <memory>
19 #include <string>
20
21 namespace boost {
22 namespace http_proto {
23
24 /** Provides message metadata for requests and responses
25 */
26 class BOOST_SYMBOL_VISIBLE
27 message_view_base
28 : public virtual fields_view_base
29 {
30 friend class request_view;
31 friend class response_view;
32 friend class message_base;
33
34 734 message_view_base() noexcept
35 // VFALCO This ctor-init has to be
36 // here even though it isn't called,
37 // so nullptr doesn't matter.
38 734 : fields_view_base(nullptr)
39 {
40 734 }
41
42 explicit
43 message_view_base(
44 detail::header const* ph) noexcept
45 : fields_view_base(ph)
46 {
47 }
48
49 public:
50 //--------------------------------------------
51 //
52 // Metadata
53 //
54 //--------------------------------------------
55
56 /** Return the type of payload of this message
57 */
58 auto
59 38 payload() const noexcept ->
60 http_proto::payload
61 {
62 38 return ph_->md.payload;
63 }
64
65 /** Return the payload size
66
67 When @ref payload returns @ref payload::size,
68 this function returns the number of octets
69 in the actual message payload.
70 */
71 std::uint64_t
72 2 payload_size() const noexcept
73 {
74
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
2 BOOST_ASSERT(
75 payload() == payload::size);
76 2 return ph_->md.payload_size;
77 }
78
79 /** Return true if semantics indicate connection persistence
80 */
81 bool
82 22 keep_alive() const noexcept
83 {
84 22 return ph_->keep_alive();
85 }
86
87 /** Return metadata about the message
88 */
89 auto
90 142 metadata() const noexcept ->
91 http_proto::metadata const&
92 {
93 142 return ph_->md;
94 }
95
96 /** Return true if the message is using a chunked
97 transfer encoding.
98 */
99 bool
100 30 chunked() const noexcept
101 {
102 30 return ph_->md.transfer_encoding.is_chunked;
103 }
104 };
105
106 } // http_proto
107 } // boost
108
109 #endif
110