LCOV - code coverage report
Current view: top level - boost/http_proto/message_view_base.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 17 17
Test Date: 2024-05-23 18:56:44 Functions: 100.0 % 7 7

            Line data    Source code
       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/http_proto/metadata.hpp>
      17              : #include <boost/url/grammar/recycled.hpp>
      18              : #include <boost/url/grammar/type_traits.hpp>
      19              : #include <memory>
      20              : #include <string>
      21              : 
      22              : namespace boost {
      23              : namespace http_proto {
      24              : 
      25              : /** Provides message metadata for requests and responses
      26              : */
      27              : class BOOST_SYMBOL_VISIBLE
      28              :     message_view_base
      29              :     : public virtual fields_view_base
      30              : {
      31              :     friend class request_view;
      32              :     friend class response_view;
      33              :     friend class message_base;
      34              : 
      35          734 :     message_view_base() noexcept
      36              :         // VFALCO This ctor-init has to be
      37              :         // here even though it isn't called,
      38              :         // so nullptr doesn't matter.
      39          734 :         : fields_view_base(nullptr)
      40              :     {
      41          734 :     }
      42              : 
      43              :     explicit
      44              :     message_view_base(
      45              :         detail::header const* ph) noexcept
      46              :         : fields_view_base(ph)
      47              :     {
      48              :     }
      49              : 
      50              : public:
      51              :     //--------------------------------------------
      52              :     //
      53              :     // Metadata
      54              :     //
      55              :     //--------------------------------------------
      56              : 
      57              :     /** Return the type of payload of this message
      58              :     */
      59              :     auto
      60           38 :     payload() const noexcept ->
      61              :         http_proto::payload
      62              :     {
      63           38 :         return ph_->md.payload;
      64              :     }
      65              : 
      66              :     /** Return the payload size
      67              : 
      68              :         When @ref payload returns @ref payload::size,
      69              :         this function returns the number of octets
      70              :         in the actual message payload.
      71              :     */
      72              :     std::uint64_t
      73            2 :     payload_size() const noexcept
      74              :     {
      75            2 :         BOOST_ASSERT(
      76              :             payload() == payload::size);
      77            2 :         return ph_->md.payload_size;
      78              :     }
      79              : 
      80              :     /** Return true if semantics indicate connection persistence
      81              :     */
      82              :     bool
      83           22 :     keep_alive() const noexcept
      84              :     {
      85           22 :         return ph_->keep_alive();
      86              :     }
      87              : 
      88              :     /** Return metadata about the message
      89              :     */
      90              :     auto
      91          142 :     metadata() const noexcept ->
      92              :         http_proto::metadata const&
      93              :     {
      94          142 :         return ph_->md;
      95              :     }
      96              : 
      97              :     /** Return true if the message is using a chunked
      98              :         transfer encoding.
      99              :     */
     100              :     bool
     101           30 :     chunked() const noexcept
     102              :     {
     103           30 :         return ph_->md.transfer_encoding.is_chunked;
     104              :     }
     105              : 
     106              :     /** Return true if the message uses some form of
     107              :         compression (deflate, gzip).
     108              :     */
     109              :     bool
     110           26 :     compressed() const noexcept
     111              :     {
     112              :         return
     113           26 :             ph_->md.content_encoding.coding !=
     114           26 :             content_coding_type::none;
     115              :     }
     116              : 
     117              :     enum content_coding_type
     118              :     content_coding() const noexcept
     119              :     {
     120              :         return ph_->md.content_encoding.coding;
     121              :     }
     122              : };
     123              : 
     124              : } // http_proto
     125              : } // boost
     126              : 
     127              : #endif
        

Generated by: LCOV version 2.1