GCC Code Coverage Report


Directory: libs/http_proto/
File: include/boost/http_proto/response_view.hpp
Date: 2025-06-14 21:08:33
Exec Total Coverage
Lines: 20 20 100.0%
Functions: 8 8 100.0%
Branches: 1 2 50.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2019 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_RESPONSE_VIEW_HPP
11 #define BOOST_HTTP_PROTO_RESPONSE_VIEW_HPP
12
13 #include <boost/http_proto/detail/config.hpp>
14 #include <boost/http_proto/message_view_base.hpp>
15 #include <boost/core/detail/string_view.hpp>
16
17 namespace boost {
18 namespace http_proto {
19
20 /** A reference to an HTTP response header
21 */
22 class response_view
23 : public message_view_base
24 {
25 friend class response_base;
26 friend class response_parser;
27
28 explicit
29 59 response_view(
30 detail::header const* ph) noexcept
31 59 : fields_view_base(ph)
32 {
33
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 59 times.
59 BOOST_ASSERT(ph_->kind ==
34 detail::kind::response);
35 59 }
36
37 public:
38 /** Constructor
39 */
40 4 response_view() noexcept
41 4 : fields_view_base(
42 detail::header::get_default(
43 4 detail::kind::response))
44 {
45 4 }
46
47 /** Constructor
48 */
49 1 response_view(
50 response_view const&) noexcept = default;
51
52 /** Assignment
53 */
54 response_view&
55 1 operator=(
56 response_view const&) noexcept = default;
57
58 //--------------------------------------------
59 //
60 // Observers
61 //
62 //--------------------------------------------
63
64 /** Return the reason string
65
66 This field is obsolete in HTTP/1
67 and should only be used for display
68 purposes.
69 */
70 core::string_view
71 4 reason() const noexcept
72 {
73 8 return core::string_view(
74 4 ph_->cbuf + 13,
75 4 ph_->prefix - 15);
76 }
77
78 /** Return the status code
79 */
80 http_proto::status
81 4 status() const noexcept
82 {
83 4 return ph_->res.status;
84 }
85
86 /** Return the status code integer
87 */
88 unsigned short
89 4 status_int() const noexcept
90 {
91 4 return ph_->res.status_int;
92 }
93
94 /** Return the HTTP-version
95 */
96 http_proto::version
97 4 version() const noexcept
98 {
99 4 return ph_->version;
100 }
101
102 /** Swap this with another instance
103 */
104 void
105 swap(response_view& other) noexcept
106 {
107 auto ph = ph_;
108 ph_ = other.ph_;
109 ph_ = ph;
110 }
111
112 /** Swap two instances
113 */
114 // hidden friend
115 friend
116 void
117 swap(
118 response_view& t0,
119 response_view& t1) noexcept
120 {
121 t0.swap(t1);
122 }
123 };
124
125 } // http_proto
126 } // boost
127
128 #endif
129