26 #include <condition_variable>    31 #include <unordered_map>    37 #include <sys/select.h>    40 #include <tacopie/network/self_pipe.hpp>    41 #include <tacopie/network/tcp_socket.hpp>    42 #include <tacopie/utils/thread_pool.hpp>    44 #ifndef __TACOPIE_IO_SERVICE_NB_WORKERS    45 #define __TACOPIE_IO_SERVICE_NB_WORKERS 1    93   void track(
const tcp_socket& socket, 
const event_callback_t& rd_callback = 
nullptr, 
const event_callback_t& wr_callback = 
nullptr);
   144   struct tracked_socket {
   147     : rd_callback(nullptr)
   148     , wr_callback(nullptr) {}
   151     event_callback_t rd_callback;
   152     std::atomic<bool> is_executing_rd_callback = ATOMIC_VAR_INIT(
false);
   155     event_callback_t wr_callback;
   156     std::atomic<bool> is_executing_wr_callback = ATOMIC_VAR_INIT(
false);
   159     std::atomic<bool> marked_for_untrack = ATOMIC_VAR_INIT(
false);
   175   int init_poll_fds_info(
void);
   181   void process_events(
void);
   189   void process_rd_event(
const fd_t& fd, tracked_socket& socket);
   197   void process_wr_event(
const fd_t& fd, tracked_socket& socket);
   203   std::unordered_map<fd_t, tracked_socket> m_tracked_sockets;
   208   std::atomic<bool> m_should_stop;
   213   std::thread m_poll_worker;
   223   std::mutex m_tracked_sockets_mtx;
   228   std::vector<fd_t> m_polled_fds;
   243   std::condition_variable m_wait_for_removal_condvar;
   256 const std::shared_ptr<io_service>& get_default_io_service(
void);
   263 void set_default_io_service(
const std::shared_ptr<io_service>& service);
 void set_nb_workers(std::size_t nb_threads)
std::function< void(fd_t)> event_callback_t
Definition: io_service.hpp:82
void untrack(const tcp_socket &socket)
io_service & operator=(const io_service &)=delete
assignment operator 
Definition: tcp_socket.hpp:38
Definition: io_service.hpp:54
void wait_for_removal(const tcp_socket &socket)
Definition: self_pipe.hpp:33
Definition: io_service.hpp:48
void set_wr_callback(const tcp_socket &socket, const event_callback_t &event_callback)
void track(const tcp_socket &socket, const event_callback_t &rd_callback=nullptr, const event_callback_t &wr_callback=nullptr)
Definition: thread_pool.hpp:41
void set_rd_callback(const tcp_socket &socket, const event_callback_t &event_callback)