Tacopie  3.0.0
Tacopie is a TCP Client & Server C++11 library.
Classes | Public Types | Public Member Functions | List of all members
tacopie::io_service Class Reference

#include <io_service.hpp>

Public Types

typedef std::function< void(fd_t)> event_callback_t
 

Public Member Functions

 io_service (void)
 
 ~io_service (void)
 dtor
 
 io_service (const io_service &)=delete
 copy ctor
 
io_serviceoperator= (const io_service &)=delete
 assignment operator
 
void set_nb_workers (std::size_t nb_threads)
 
void track (const tcp_socket &socket, const event_callback_t &rd_callback=nullptr, const event_callback_t &wr_callback=nullptr)
 
void set_rd_callback (const tcp_socket &socket, const event_callback_t &event_callback)
 
void set_wr_callback (const tcp_socket &socket, const event_callback_t &event_callback)
 
void untrack (const tcp_socket &socket)
 
void wait_for_removal (const tcp_socket &socket)
 

Detailed Description

service that operates IO Handling. It polls sockets for input and output, processes read and write operations and calls the appropriate callbacks.

Member Typedef Documentation

◆ event_callback_t

typedef std::function<void(fd_t)> tacopie::io_service::event_callback_t

callback handler typedef called on new socket event if register to io_service

Constructor & Destructor Documentation

◆ io_service()

tacopie::io_service::io_service ( void  )

ctor

Member Function Documentation

◆ set_nb_workers()

void tacopie::io_service::set_nb_workers ( std::size_t  nb_threads)

reset number of io_service workers assigned to this io_service this can be safely called at runtime, even if the io_service is currently running it can be useful if you need to re-adjust the number of workers

Parameters
nb_threadsnumber of workers

◆ set_rd_callback()

void tacopie::io_service::set_rd_callback ( const tcp_socket socket,
const event_callback_t event_callback 
)

update the read callback if socket is not tracked yet, track it

Parameters
socketsocket to be tracked
event_callbackcallback to be executed on read event

◆ set_wr_callback()

void tacopie::io_service::set_wr_callback ( const tcp_socket socket,
const event_callback_t event_callback 
)

update the write callback if socket is not tracked yet, track it

Parameters
socketsocket to be tracked
event_callbackcallback to be executed on write event

◆ track()

void tacopie::io_service::track ( const tcp_socket socket,
const event_callback_t rd_callback = nullptr,
const event_callback_t wr_callback = nullptr 
)

track socket add socket to io_service tracking for read/write operation socket is polled only if read or write callback is defined

Parameters
socketsocket to be tracked
rd_callbackcallback to be executed on read event
wr_callbackcallback to be executed on write event

◆ untrack()

void tacopie::io_service::untrack ( const tcp_socket socket)

remove socket from io_service tracking socket is marked for untracking and will effectively be removed asynchronously from tracking once

  • poll wakes up
  • no callback are being executed for that socket

re-adding track while socket is pending for untrack is fine and will simply cancel the untrack operation

Parameters
socketsocket to be untracked

◆ wait_for_removal()

void tacopie::io_service::wait_for_removal ( const tcp_socket socket)

wait until the socket has been effectively removed basically wait until all pending callbacks are executed

Parameters
socketsocket to wait for

The documentation for this class was generated from the following file: