LCOV - code coverage report
Current view: top level - asio/sockets - unix_socket.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 2 2
Test Date: 2026-11-10 10:38:07 Functions: 100.0 % 1 1

            Line data    Source code
       1              : #ifndef THINGER_ASIO_UNIX_SOCKET_HPP
       2              : #define THINGER_ASIO_UNIX_SOCKET_HPP
       3              : 
       4              : #include "socket.hpp"
       5              : #include <boost/asio/local/stream_protocol.hpp>
       6              : #include <boost/asio/steady_timer.hpp>
       7              : #include <string_view>
       8              : 
       9              : namespace thinger::asio {
      10              : 
      11              : class unix_socket : public socket {
      12              : 
      13              : public:
      14              :     // constructors and destructors
      15              :     unix_socket(const std::string &context, boost::asio::io_context &io_context);
      16              :     unix_socket(const std::string &context, boost::asio::local::stream_protocol::socket&& socket);
      17              :     ~unix_socket() override;
      18              : 
      19              :     // socket control
      20              :     awaitable<boost::system::error_code> connect(
      21              :         const std::string &host,
      22              :         const std::string &port,
      23              :         std::chrono::seconds timeout) override;
      24              :     awaitable<boost::system::error_code> connect(const std::string &path, std::chrono::seconds timeout);
      25              :     void close() override;
      26              :     void cancel() override;
      27              :     // Stop sending, reading on: the half-close of a graceful close. False if it failed
      28              :     bool shutdown_send();
      29              : 
      30              :     // read operations
      31              :     awaitable<io_result> read_some(uint8_t buffer[], size_t max_size) override;
      32              :     awaitable<io_result> read_some_cancellable(uint8_t buffer[], size_t max_size,
      33              :                                                boost::asio::cancellation_slot slot) override;
      34              :     awaitable<io_result> read(uint8_t buffer[], size_t size) override;
      35              :     awaitable<io_result> read(boost::asio::streambuf &buffer, size_t size) override;
      36              :     awaitable<io_result> read_until(boost::asio::streambuf &buffer, std::string_view delim) override;
      37              : 
      38              :     // write operations
      39              :     awaitable<io_result> write(const uint8_t buffer[], size_t size) override;
      40              :     awaitable<io_result> write(std::string_view str) override;
      41              :     awaitable<io_result> write(const std::vector<boost::asio::const_buffer> &buffers) override;
      42        12176 :     size_t write_now(const std::vector<boost::asio::const_buffer> &buffers, boost::system::error_code &ec) override {
      43        12176 :         return send_now(socket_.native_handle(), buffers, ec);
      44              :     }
      45              : 
      46              :     // wait
      47              :     awaitable<boost::system::error_code> wait(boost::asio::socket_base::wait_type type) override;
      48              :     awaitable<boost::system::error_code> peer_closed() override;
      49              : 
      50              :     // some getters to check the state
      51              :     bool is_open() const override;
      52              :     bool is_secure() const override;
      53              :     size_t available() const override;
      54              :     size_t send_backlog() const override;
      55              :     bool readable_now() const override;
      56              :     std::string get_remote_ip() const override;
      57              :     std::string get_local_port() const override;
      58              :     std::string get_remote_port() const override;
      59              : 
      60              : private:
      61              :     boost::asio::local::stream_protocol::socket socket_;
      62              : };
      63              : 
      64              : }
      65              : 
      66              : #endif
        

Generated by: LCOV version 2.0-1