LCOV - code coverage report
Current view: top level - http/data - out_data.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 72.7 % 11 8
Test Date: 2026-02-20 15:38:22 Functions: 66.7 % 6 4

            Line data    Source code
       1              : #ifndef THINGER_HTTP_DATA_OUT_DATA_HPP
       2              : #define THINGER_HTTP_DATA_OUT_DATA_HPP
       3              : 
       4              : #include <memory>
       5              : #include <functional>
       6              : #include <boost/asio.hpp>
       7              : #include "../../asio/sockets/socket.hpp"
       8              : #include "../../util/types.hpp"
       9              : 
      10              : namespace thinger::http::data {
      11              : 
      12              : class out_data {
      13              : 
      14              : public:
      15         4005 :     out_data() = default;
      16         4014 :     virtual ~out_data() = default;
      17              : 
      18         1752 :     virtual awaitable<size_t> to_socket(std::shared_ptr<thinger::asio::socket> socket) {
      19              :         std::vector<boost::asio::const_buffer> buffer;
      20              :         fill_buffer(buffer);
      21              :         co_return co_await socket->write(buffer);
      22         3504 :     }
      23              : 
      24              :     void set_next_data(std::shared_ptr<out_data> data) {
      25              :         data_ = data;
      26              :     }
      27              : 
      28              :     virtual size_t get_size() = 0;
      29              :     virtual void to_buffer(std::vector<boost::asio::const_buffer>& buffer) const = 0;
      30              : 
      31              : protected:
      32         1752 :     void fill_buffer(std::vector<boost::asio::const_buffer>& buffer) {
      33         1752 :         to_buffer(buffer);
      34         1752 :         if (data_) {
      35            0 :             data_->fill_buffer(buffer);
      36              :         }
      37         1752 :     }
      38              : 
      39            0 :     virtual bool supports_buffer() {
      40            0 :         return true;
      41              :     }
      42              : 
      43              : private:
      44              :     std::shared_ptr<out_data> data_;
      45              : };
      46              : 
      47              : }
      48              : 
      49              : #endif
        

Generated by: LCOV version 2.0-1