GCC Code Coverage Report


Directory: libs/http_proto/
File: include/boost/http_proto/message_view_base.hpp
Date: 2025-06-14 21:08: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 message_view_base
27 : public virtual fields_view_base
28 {
29 friend class request_view;
30 friend class response_view;
31 friend class message_base;
32
33 920 message_view_base() noexcept
34 // VFALCO This ctor-init has to be
35 // here even though it isn't called,
36 // so nullptr doesn't matter.
37 920 : fields_view_base(nullptr)
38 {
39 920 }
40
41 explicit
42 message_view_base(
43 detail::header const* ph) noexcept
44 : fields_view_base(ph)
45 {
46 }
47
48 public:
49 //--------------------------------------------
50 //
51 // Metadata
52 //
53 //--------------------------------------------
54
55 /** Return the type of payload of this message
56 */
57 auto
58 39 payload() const noexcept ->
59 http_proto::payload
60 {
61 39 return ph_->md.payload;
62 }
63
64 /** Return the payload size
65
66 When @ref payload returns @ref payload::size,
67 this function returns the number of octets
68 in the actual message payload.
69 */
70 std::uint64_t
71 2 payload_size() const noexcept
72 {
73
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
2 BOOST_ASSERT(
74 payload() == payload::size);
75 2 return ph_->md.payload_size;
76 }
77
78 /** Return true if semantics indicate connection persistence
79 */
80 bool
81 22 keep_alive() const noexcept
82 {
83 22 return ph_->keep_alive();
84 }
85
86 /** Return metadata about the message
87 */
88 auto
89 243 metadata() const noexcept ->
90 http_proto::metadata const&
91 {
92 243 return ph_->md;
93 }
94
95 /** Return true if the message is using a chunked
96 transfer encoding.
97 */
98 bool
99 4592 chunked() const noexcept
100 {
101 4592 return ph_->md.transfer_encoding.is_chunked;
102 }
103 };
104
105 } // http_proto
106 } // boost
107
108 #endif
109