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-02-20 15:38:22 Functions: 75.0 % 8 6

            Line data    Source code
       1              : #include "socket_server_base.hpp"
       2              : 
       3              : namespace thinger::asio {
       4              : 
       5          658 : 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          658 :                                      std::set<std::string> forbidden_remotes)
       9          658 :     : allowed_remotes_(std::move(allowed_remotes))
      10          658 :     , forbidden_remotes_(std::move(forbidden_remotes))
      11          658 :     , max_listening_attempts_(MAX_LISTENING_ATTEMPTS)
      12          658 :     , acceptor_context_provider_(std::move(acceptor_context_provider))
      13         1974 :     , connection_context_provider_(std::move(connection_context_provider))
      14              : {
      15          658 : }
      16              : 
      17          658 : void socket_server_base::set_max_listening_attempts(int attempts) {
      18          658 :     max_listening_attempts_ = attempts;
      19          658 : }
      20              : 
      21          658 : void socket_server_base::set_handler(std::function<void(std::shared_ptr<socket>)> handler) {
      22          658 :     handler_ = std::move(handler);
      23          658 : }
      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          828 : bool socket_server_base::is_remote_allowed(const std::string& remote_ip) const {
      34          828 :     if (forbidden_remotes_.contains(remote_ip)) {
      35            0 :         return false;
      36              :     }
      37          828 :     if (!allowed_remotes_.empty() && !allowed_remotes_.contains(remote_ip)) {
      38            0 :         return false;
      39              :     }
      40          828 :     return true;
      41              : }
      42              : 
      43          658 : bool socket_server_base::start() {
      44          658 :     if (!running_ && handler_) {
      45          658 :         if (create_acceptor()) {
      46          652 :             running_ = true;
      47          652 :             accept_connection();
      48          652 :             return true;
      49              :         }
      50              :     }
      51            6 :     return false;
      52              : }
      53              : 
      54          709 : bool socket_server_base::stop() {
      55          709 :     running_ = false;
      56          709 :     return true;
      57              : }
      58              : 
      59              : } // namespace thinger::asio
        

Generated by: LCOV version 2.0-1