LCOV - code coverage report
Current view: top level - boost/http_proto - request_view.hpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 23 23 100.0 %
Date: 2024-03-18 23:12:48 Functions: 8 8 100.0 %

          Line data    Source code
       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_REQUEST_VIEW_HPP
      11             : #define BOOST_HTTP_PROTO_REQUEST_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 read-only reference to an HTTP request
      21             : */
      22             : class BOOST_SYMBOL_VISIBLE
      23           1 :     request_view
      24             :     : public message_view_base
      25             : {
      26             :     friend class request;
      27             :     friend class request_parser;
      28             : 
      29             :     explicit
      30         316 :     request_view(
      31             :         detail::header const* ph) noexcept
      32         316 :         : fields_view_base(ph)
      33             :     {
      34         316 :         BOOST_ASSERT(ph_->kind ==
      35             :             detail::kind::request);
      36         316 :     }
      37             : 
      38             : public:
      39             :     /** Constructor
      40             :     */
      41           4 :     request_view() noexcept
      42           4 :         : fields_view_base(
      43             :             detail::header::get_default(
      44           4 :                 detail::kind::request))
      45             :     {
      46           4 :     }
      47             : 
      48             :     /** Constructor
      49             :     */
      50           1 :     request_view(
      51             :         request_view const&) noexcept = default;
      52             : 
      53             :     /** Assignment
      54             :     */
      55             :     request_view&
      56             :     operator=(
      57             :         request_view const&) noexcept = default;
      58             : 
      59             :     //--------------------------------------------
      60             :     //
      61             :     // Observers
      62             :     //
      63             :     //--------------------------------------------
      64             : 
      65             :     /** Return the method as an integral constant
      66             : 
      67             :         If the method returned is equal to
      68             :         @ref method::unknown, the method may
      69             :         be obtained as a string instead, by
      70             :         calling @ref method_text.
      71             :     */
      72             :     http_proto::method
      73          55 :     method() const noexcept
      74             :     {
      75          55 :         return ph_->req.method;
      76             :     };
      77             : 
      78             :     /** Return the method as a string
      79             :     */
      80             :     core::string_view
      81          55 :     method_text() const noexcept
      82             :     {
      83         110 :         return core::string_view(
      84          55 :             ph_->cbuf,
      85          55 :             ph_->req.method_len);
      86             :     }
      87             : 
      88             :     /** Return the request-target string
      89             :     */
      90             :     core::string_view
      91          55 :     target_text() const noexcept
      92             :     {
      93         110 :         return core::string_view(
      94          55 :             ph_->cbuf +
      95          55 :                 ph_->req.method_len + 1,
      96          55 :             ph_->req.target_len);
      97             :     }
      98             : 
      99             :     /** Return the HTTP-version
     100             :     */
     101             :     http_proto::version
     102          55 :     version() const noexcept
     103             :     {
     104          55 :         return ph_->version;
     105             :     }
     106             : 
     107             :     /** Swap this with another instance
     108             :     */
     109             :     void
     110             :     swap(request_view& other) noexcept
     111             :     {
     112             :         auto ph = ph_;
     113             :         ph_ = other.ph_;
     114             :         ph_ = ph;
     115             :     }
     116             : 
     117             :     /** Swap two instances
     118             :     */
     119             :     // hidden friend
     120             :     friend
     121             :     void
     122             :     swap(
     123             :         request_view& t0,
     124             :         request_view& t1) noexcept
     125             :     {
     126             :         t0.swap(t1);
     127             :     }
     128             : };
     129             : 
     130             : } // http_proto
     131             : } // boost
     132             : 
     133             : #endif

Generated by: LCOV version 1.15