26 #include <condition_variable> 31 #include <unordered_map> 37 #include <sys/select.h> 44 #ifndef __TACOPIE_IO_SERVICE_NB_WORKERS 45 #define __TACOPIE_IO_SERVICE_NB_WORKERS 1 87 void track(
const tcp_socket& socket,
const event_callback_t& rd_callback =
nullptr,
const event_callback_t& wr_callback =
nullptr);
int init_poll_fds_info(void)
std::atomic< bool > is_executing_wr_callback
Definition: io_service.hpp:119
void set_default_io_service(const std::shared_ptr< io_service > &service)
void set_nb_workers(std::size_t nb_threads)
#define __TACOPIE_IO_SERVICE_NB_WORKERS
Definition: io_service.hpp:45
std::atomic< bool > marked_for_untrack
marked for untrack
Definition: io_service.hpp:122
tracked_socket(void)
ctor
Definition: io_service.hpp:109
std::function< void(fd_t)> event_callback_t
Definition: io_service.hpp:84
io_service(std::size_t nb_threads=__TACOPIE_IO_SERVICE_NB_WORKERS)
tacopie::self_pipe m_notifier
Definition: io_service.hpp:211
void untrack(const tcp_socket &socket)
void process_wr_event(const fd_t &fd, tracked_socket &socket)
io_service & operator=(const io_service &)=delete
assignment operator
Definition: tcp_socket.hpp:38
Definition: io_service.hpp:54
std::atomic< bool > m_should_stop
Definition: io_service.hpp:171
utils::thread_pool m_callback_workers
Definition: io_service.hpp:181
std::condition_variable m_wait_for_removal_condvar
Definition: io_service.hpp:206
fd_set m_rd_set
Definition: io_service.hpp:196
void wait_for_removal(const tcp_socket &socket)
std::mutex m_tracked_sockets_mtx
Definition: io_service.hpp:186
Definition: self_pipe.hpp:29
std::thread m_poll_worker
Definition: io_service.hpp:176
std::vector< fd_t > m_polled_fds
Definition: io_service.hpp:191
Definition: io_service.hpp:48
void process_rd_event(const fd_t &fd, tracked_socket &socket)
std::unordered_map< fd_t, tracked_socket > m_tracked_sockets
Definition: io_service.hpp:166
void set_wr_callback(const tcp_socket &socket, const event_callback_t &event_callback)
Definition: io_service.hpp:107
fd_set m_wr_set
Definition: io_service.hpp:201
void process_events(void)
event_callback_t rd_callback
rd event
Definition: io_service.hpp:114
void track(const tcp_socket &socket, const event_callback_t &rd_callback=nullptr, const event_callback_t &wr_callback=nullptr)
track & untrack socket
Definition: thread_pool.hpp:37
int fd_t
file descriptor platform type
Definition: typedefs.hpp:36
void set_rd_callback(const tcp_socket &socket, const event_callback_t &event_callback)
const std::shared_ptr< io_service > & get_default_io_service(std::uint32_t num_io_workers=1)
event_callback_t wr_callback
wr event
Definition: io_service.hpp:118
std::atomic< bool > is_executing_rd_callback
Definition: io_service.hpp:115