LCOV - code coverage report
Current view: top level - asio - socket_server_base.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 77.8 % 36 28
Test Date: 2026-04-21 17:49:55 Functions: 75.0 % 8 6

            Line data    Source code
       1              : #include "socket_server_base.hpp"
       2              : 
       3              : namespace thinger::asio {
       4              : 
       5          810 : socket_server_base::socket_server_base(io_context_provider acceptor_context_provider,
       6              :                                      io_context_provider connection_context_provider,
       7              :                                      std::set<std::string> allowed_remotes, 
       8          810 :                                      std::set<std::string> forbidden_remotes)
       9          810 :     : allowed_remotes_(std::move(allowed_remotes))
      10          810 :     , forbidden_remotes_(std::move(forbidden_remotes))
      11          810 :     , max_listening_attempts_(MAX_LISTENING_ATTEMPTS)
      12          810 :     , acceptor_context_provider_(std::move(acceptor_context_provider))
      13         2430 :     , connection_context_provider_(std::move(connection_context_provider))
      14              : {
      15          810 : }
      16              : 
      17          810 : void socket_server_base::set_max_listening_attempts(int attempts) {
      18          810 :     max_listening_attempts_ = attempts;
      19          810 : }
      20              : 
      21          810 : void socket_server_base::set_handler(std::function<void(std::shared_ptr<socket>)> handler) {
      22          810 :     handler_ = std::move(handler);
      23          810 : }
      24              : 
      25            0 : void socket_server_base::set_allowed_remotes(std::set<std::string> allowed) {
      26            0 :     allowed_remotes_ = std::move(allowed);
      27            0 : }
      28              : 
      29            0 : void socket_server_base::set_forbidden_remotes(std::set<std::string> forbidden) {
      30            0 :     forbidden_remotes_ = std::move(forbidden);
      31            0 : }
      32              : 
      33          968 : bool socket_server_base::is_remote_allowed(const std::string& remote_ip) const {
      34          968 :     if (forbidden_remotes_.contains(remote_ip)) {
      35            0 :         return false;
      36              :     }
      37          968 :     if (!allowed_remotes_.empty() && !allowed_remotes_.contains(remote_ip)) {
      38            0 :         return false;
      39              :     }
      40          968 :     return true;
      41              : }
      42              : 
      43          810 : bool socket_server_base::start() {
      44          810 :     if (!running_ && handler_) {
      45          810 :         if (create_acceptor()) {
      46          804 :             running_ = true;
      47          804 :             accept_connection();
      48          804 :             return true;
      49              :         }
      50              :     }
      51            6 :     return false;
      52              : }
      53              : 
      54          873 : bool socket_server_base::stop() {
      55          873 :     running_ = false;
      56          873 :     return true;
      57              : }
      58              : 
      59              : } // namespace thinger::asio
        

Generated by: LCOV version 2.0-1