From 1fa58db0836b289782b20b95866d412a7f3bbc7e Mon Sep 17 00:00:00 2001
From: Simon Ninon This is the complete list of members for tacopie::io_service, including all inherited members. service that operates IO Handling. It polls sockets for input and output, processes read and write operations and calls the appropriate callbacks. dtor copy ctor init m_poll_fds_info simply initialize m_polled_fds variable based on m_tracked_sockets information assignment operator poll worker function main loop of the background thread in charge of the io_service in charge of polling fds process poll detected events called whenever select/poll completed to check read and write availablity process read event reported by select/poll for a given socket process write event reported by select/poll for a given socket track & untrack socket wait until the socket has been effectively removed basically wait until all pending callbacks are executed callback workers fd associated to the pipe used to wake up the poll call poll thread data structure given to select (list of fds to poll) data structure given to select (list of fds to poll for read) whether the worker should stop or not tracked sockets thread safety condition variable to wait on removal data structure given to select (list of fds to poll for write) default logger class provided by the library log level ctor dtor copy ctor
-
- ▼Ntacopie
+ ▼Nutils
+ ▼Ntacopie ▼Nutils
- Cthread_pool
- ▼Cio_service
- Ctracked_socket
- Clogger
- Clogger_iface
- Cself_pipe
- Ctacopie_error
- ▼Ctcp_client
- Cread_request
- Cread_result
- Cwrite_request
- Cwrite_result
- Ctcp_server
+ Ctcp_socket
+ Cio_service
+ Clogger
+ Clogger_iface
+ Cself_pipe
+ Ctacopie_error
+ ▼Ctcp_client
+ Cread_request
+ Cread_result
+ Cwrite_request
+ Cwrite_result
+ Ctcp_server Ctcp_socket
diff --git a/docs/html/classtacopie_1_1io__service-members.html b/docs/html/classtacopie_1_1io__service-members.html
index 8756d9e..a6dcaaf 100644
--- a/docs/html/classtacopie_1_1io__service-members.html
+++ b/docs/html/classtacopie_1_1io__service-members.html
@@ -61,7 +61,7 @@
+
-logger_iface (tacopie)
-thread_pool (tacopie::utils) logger_iface (tacopie)
+tcp_client (tacopie) tcp_client::write_result (tacopie)
-
-io_service::tracked_socket (tacopie)
+io_service (tacopie) tacopie_error (tacopie)
-tcp_server (tacopie)
+ io_service (tacopie) self_pipe (tacopie) tcp_socket (tacopie)
-
-tcp_client::read_request (tacopie) tcp_client (tacopie)
-tcp_client::read_result (tacopie) tcp_server (tacopie) tcp_client::write_request (tacopie)
-logger (tacopie)
-tcp_socket (tacopie) tcp_client::write_result (tacopie)
-
+self_pipe (tacopie) tcp_client::read_request (tacopie)
+thread_pool (tacopie::utils)
+
+tcp_client::read_result (tacopie)
+
+logger (tacopie) tacopie_error (tacopie) tcp_client::write_request (tacopie)
- event_callback_t typedef tacopie::io_service
- init_poll_fds_info(void) tacopie::io_service private
- io_service(std::size_t nb_threads=__TACOPIE_IO_SERVICE_NB_WORKERS) tacopie::io_service
- io_service(const io_service &)=delete tacopie::io_service
- m_callback_workers tacopie::io_service private
- m_notifier tacopie::io_service private
- m_poll_worker tacopie::io_service private
- m_polled_fds tacopie::io_service private
- m_rd_set tacopie::io_service private
- m_should_stop tacopie::io_service private
- m_tracked_sockets tacopie::io_service private
- m_tracked_sockets_mtx tacopie::io_service private
- m_wait_for_removal_condvar tacopie::io_service private
- m_wr_set tacopie::io_service private
- operator=(const io_service &)=delete tacopie::io_service
- poll(void) tacopie::io_service private
- process_events(void) tacopie::io_service private
- process_rd_event(const fd_t &fd, tracked_socket &socket) tacopie::io_service private
- process_wr_event(const fd_t &fd, tracked_socket &socket) tacopie::io_service private
- set_nb_workers(std::size_t nb_threads) tacopie::io_service
- set_rd_callback(const tcp_socket &socket, const event_callback_t &event_callback) tacopie::io_service
- set_wr_callback(const tcp_socket &socket, const event_callback_t &event_callback) tacopie::io_service
- track(const tcp_socket &socket, const event_callback_t &rd_callback=nullptr, const event_callback_t &wr_callback=nullptr) tacopie::io_service
- untrack(const tcp_socket &socket) tacopie::io_service
- wait_for_removal(const tcp_socket &socket) tacopie::io_service
+ ~io_service(void) tacopie::io_service
+ io_service(std::size_t nb_threads=__TACOPIE_IO_SERVICE_NB_WORKERS) tacopie::io_service
+ io_service(const io_service &)=delete tacopie::io_service
+ operator=(const io_service &)=delete tacopie::io_service
+ set_nb_workers(std::size_t nb_threads) tacopie::io_service
+ set_rd_callback(const tcp_socket &socket, const event_callback_t &event_callback) (defined in tacopie::io_service) tacopie::io_service
+ set_wr_callback(const tcp_socket &socket, const event_callback_t &event_callback) (defined in tacopie::io_service) tacopie::io_service
+ track(const tcp_socket &socket, const event_callback_t &rd_callback=nullptr, const event_callback_t &wr_callback=nullptr) tacopie::io_service
+ untrack(const tcp_socket &socket) (defined in tacopie::io_service) tacopie::io_service
+ wait_for_removal(const tcp_socket &socket) tacopie::io_service ~io_service(void) tacopie::io_service
diff --git a/docs/html/classtacopie_1_1io__service.html b/docs/html/classtacopie_1_1io__service.html
index 8f85aaf..0b160a8 100644
--- a/docs/html/classtacopie_1_1io__service.html
+++ b/docs/html/classtacopie_1_1io__service.html
@@ -61,7 +61,7 @@
#include <io_service.hpp>
-
-
-Classes
-struct tracked_socket
-
-
Public Types
+typedef std::function< void(fd_t)> event_callback_t typedef std::function< void(fd_t)> event_callback_t
-
Public Member Functions
+ io_service (std::size_t nb_threads=__TACOPIE_IO_SERVICE_NB_WORKERS) io_service (std::size_t nb_threads=__TACOPIE_IO_SERVICE_NB_WORKERS)
-
- ~io_service (void)
+ dtor More...
+
+ ~io_service (void) dtor
-
- io_service (const io_service &)=delete
+ copy ctor More...
+
+ io_service (const io_service &)=delete copy ctor
-
-io_service & operator= (const io_service &)=delete
+ assignment operator More...
+
+io_service & operator= (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)
+ track & untrack socket More...
+
+void track (const tcp_socket &socket, const event_callback_t &rd_callback=nullptr, const event_callback_t &wr_callback=nullptr) track & untrack socket
-
+void set_rd_callback (const tcp_socket &socket, const event_callback_t &event_callback)
+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 set_wr_callback (const tcp_socket &socket, const event_callback_t &event_callback)
-
+void untrack (const tcp_socket &socket)
+void untrack (const tcp_socket &socket) void wait_for_removal (const tcp_socket &socket)
-
-
-
-Private Member Functions
-void poll (void)
-
-int init_poll_fds_info (void)
-
-void process_events (void)
-
-void process_rd_event (const fd_t &fd, tracked_socket &socket)
-
-void process_wr_event (const fd_t &fd, tracked_socket &socket)
-
-
-
-Private Attributes
-std::unordered_map< fd_t, tracked_socket > m_tracked_sockets
-
-std::atomic< bool > m_should_stop
-
-std::thread m_poll_worker
-
-utils::thread_pool m_callback_workers
-
-std::mutex m_tracked_sockets_mtx
-
-std::vector< fd_t > m_polled_fds
-
-fd_set m_rd_set
-
-fd_set m_wr_set
-
-std::condition_variable m_wait_for_removal_condvar
-
-tacopie::self_pipe m_notifier Detailed Description
-
typedef std::function<void(fd_t)> tacopie::io_service::event_callback_t
+ typedef std::function<void(fd_t)> tacopie::io_service::event_callback_t
Constructor & Destructor Documentation
-◆ io_service() [1/2]
+◆ io_service()
tacopie::io_service::io_service
(
std::size_t
- nb_threads = __TACOPIE_IO_SERVICE_NB_WORKERS
)
+ nb_threads = __TACOPIE_IO_SERVICE_NB_WORKERS
)
@@ -194,255 +158,9 @@
-
◆ ~io_service()
-
-
-
-
-
- tacopie::io_service::~io_service
- (
- void
- )
-
- ◆ io_service() [2/2]
-
-
-
-
-
-
-
-
-
-
-
- tacopie::io_service::io_service
- (
- const io_service &
- )
-
-
-delete
- Member Function Documentation
-
-◆ init_poll_fds_info()
-
-
-
-
-
-
-
-
-
-
-
- int tacopie::io_service::init_poll_fds_info
- (
- void
- )
-
-
-private
-
-
-◆ operator=()
-
-
-
-
-
-
-
-
-
-
-
- io_service& tacopie::io_service::operator=
- (
- const io_service &
- )
-
-
-delete
- ◆ poll()
-
-
-
-
-
-
-
-
-
-
-
- void tacopie::io_service::poll
- (
- void
- )
-
-
-private
- ◆ process_events()
-
-
-
-
-
-
-
-
-
-
-
- void tacopie::io_service::process_events
- (
- void
- )
-
-
-private
- ◆ process_rd_event()
-
-
-
-
-
-
-
-
-
-
-
- void tacopie::io_service::process_rd_event
- (
- const fd_t &
- fd,
-
-
-
-
- tracked_socket &
- socket
-
-
-
- )
-
-
-private
-
-
-
-
-
- fd fd for which a read event has been reported
- socket tracked_socket associated to the given fd ◆ process_wr_event()
-
-
-
-
-
-
-
-
-
-
-
- void tacopie::io_service::process_wr_event
- (
- const fd_t &
- fd,
-
-
-
-
- tracked_socket &
- socket
-
-
-
- )
-
-
-private
-
-
-
-
-
- fd fd for which a write event has been reported
- socket tracked_socket associated to the given fd ◆ set_nb_workers()
@@ -466,116 +184,6 @@
-
◆ set_rd_callback()
-
-
-
-
-
- void tacopie::io_service::set_rd_callback
- (
- const tcp_socket &
- socket,
-
-
-
-
- const event_callback_t &
- event_callback
-
-
-
- )
-
- ◆ set_wr_callback()
-
-
-
-
-
- void tacopie::io_service::set_wr_callback
- (
- const tcp_socket &
- socket,
-
-
-
-
- const event_callback_t &
- event_callback
-
-
-
- )
-
- ◆ track()
-
-
-
-
-
- void tacopie::io_service::track
- (
- const tcp_socket &
- socket,
-
-
-
-
- const event_callback_t &
- rd_callback =
- nullptr
,
-
-
-
- const event_callback_t &
- wr_callback =
- nullptr
-
-
- )
-
- ◆ untrack()
-
-
-
-
-
- void tacopie::io_service::untrack
- (
- const tcp_socket &
- socket )
-
-
Member Data Documentation
-
-◆ m_callback_workers
-
-
-
-
-
-
-
-
-
-
-
- utils::thread_pool tacopie::io_service::m_callback_workers
-
-private
- ◆ m_notifier
-
-
-
-
-
-
-
-
-
-
-
- tacopie::self_pipe tacopie::io_service::m_notifier
-
-private
- ◆ m_poll_worker
-
-
-
-
-
-
-
-
-
-
-
- std::thread tacopie::io_service::m_poll_worker
-
-private
- ◆ m_polled_fds
-
-
-
-
-
-
-
-
-
-
-
- std::vector<fd_t> tacopie::io_service::m_polled_fds
-
-private
- ◆ m_rd_set
-
-
-
-
-
-
-
-
-
-
-
- fd_set tacopie::io_service::m_rd_set
-
-private
- ◆ m_should_stop
-
-
-
-
-
-
-
-
-
-
-
- std::atomic<bool> tacopie::io_service::m_should_stop
-
-private
- ◆ m_tracked_sockets
-
-
-
-
-
-
-
-
-
-
-
- std::unordered_map<fd_t, tracked_socket> tacopie::io_service::m_tracked_sockets
-
-private
- ◆ m_tracked_sockets_mtx
-
-
-
-
-
-
-
-
-
-
-
- std::mutex tacopie::io_service::m_tracked_sockets_mtx
-
-private
- ◆ m_wait_for_removal_condvar
-
-
-
-
-
-
-
-
-
-
-
- std::condition_variable tacopie::io_service::m_wait_for_removal_condvar
-
-private
- ◆ m_wr_set
-
-
-
-
-
-
-
-
-
-
-
- fd_set tacopie::io_service::m_wr_set
-
-private
-
The documentation for this class was generated from the following file:
diff --git a/docs/html/classtacopie_1_1logger-members.html b/docs/html/classtacopie_1_1logger-members.html
index b3b57f7..d3744e0 100644
--- a/docs/html/classtacopie_1_1logger-members.html
+++ b/docs/html/classtacopie_1_1logger-members.html
@@ -61,7 +61,7 @@
logger(const logger &)=default tacopie::logger logger_iface(void)=default tacopie::logger_iface
- logger_iface(const logger_iface &)=default tacopie::logger_iface
- m_level tacopie::logger private m_mutex tacopie::logger private operator=(const logger &)=default tacopie::logger tacopie::logger_iface::operator=(const logger_iface &)=default tacopie::logger_iface
diff --git a/docs/html/classtacopie_1_1logger.html b/docs/html/classtacopie_1_1logger.html
index 14da227..53ff099 100644
--- a/docs/html/classtacopie_1_1logger.html
+++ b/docs/html/classtacopie_1_1logger.html
@@ -61,14 +61,13 @@
warn(const std::string &msg, const std::string &file, std::size_t line) tacopie::logger virtual
-
Public Types
enum log_level { log_level::error = 0,
-log_level::warn = 1,
-log_level::info = 2,
-log_level::debug = 3
+ enum log_level { error = 0,
+warn = 1,
+info = 2,
+debug = 3
}
-
Public Member Functions
- logger (log_level level=log_level::info)
+ ctor More...
+
+ logger (log_level level=log_level::info) ctor
-
- ~logger (void)=default
+ dtor More...
+
+ ~logger (void)=default dtor
-
- logger (const logger &)=default
+ copy ctor More...
+
+ logger (const logger &)=default copy ctor
-
-logger & operator= (const logger &)=default
+ assignment operator More...
+
+logger & operator= (const logger &)=default assignment operator void debug (const std::string &msg, const std::string &file, std::size_t line)
@@ -118,25 +121,22 @@
void error (const std::string &msg, const std::string &file, std::size_t line)
- Public Member Functions inherited from tacopie::logger_iface
- logger_iface (void)=default
+ ctor More...
+
+ logger_iface (void)=default ctor
-
-virtual ~logger_iface (void)=default
+ dtor More...
+
+virtual ~logger_iface (void)=default dtor
-
- logger_iface (const logger_iface &)=default
+ copy ctor More...
+
+ logger_iface (const logger_iface &)=default copy ctor
-
-logger_iface & operator= (const logger_iface &)=default
+ assignment operator More...
+
+logger_iface & operator= (const logger_iface &)=default assignment operator
-
-
-
-Private Attributes
-log_level m_level
-
-std::mutex m_mutex Detailed Description
-
-
-Enumerator
-error
-warn
-info
-debug Constructor & Destructor Documentation
-
-◆ logger() [1/2]
-
-
-
-
-
- tacopie::logger::logger
- (
- log_level
- level = log_level::info
)
-
- ◆ ~logger()
-
-
-
-
-
-
-
-
-
-
-
- tacopie::logger::~logger
- (
- void
- )
-
-
-default
- ◆ logger() [2/2]
-
-
-
-
-
-
-
-
-
-
-
- tacopie::logger::logger
- (
- const logger &
- )
-
-
-default
- tacopie::logger_iface.
assignment operator
-
-
|
- -private | -
current log level in use
- -
-
|
- -private | -
mutex used to serialize logs in multithreaded environment
-Public Member Functions | |
logger_iface (void)=default | |
ctor More... | |
+ | logger_iface (void)=default |
ctor | |
virtual | ~logger_iface (void)=default |
dtor More... | |
+virtual | ~logger_iface (void)=default |
dtor | |
logger_iface (const logger_iface &)=default | |
copy ctor More... | |
+ | logger_iface (const logger_iface &)=default |
copy ctor | |
logger_iface & | operator= (const logger_iface &)=default |
assignment operator More... | |
+logger_iface & | operator= (const logger_iface &)=default |
assignment operator | |
virtual void | debug (const std::string &msg, const std::string &file, std::size_t line)=0 |
logger_iface should be inherited by any class intended to be used for logging
-
-
|
- -default | -
ctor
- -
-
|
- -virtualdefault | -
dtor
- -
-
|
- -default | -
copy ctor
- -
-
|
- -default | -
assignment operator
-#include <self_pipe.hpp>
Public Member Functions | |
self_pipe (void) | |
ctor More... | |
+ | self_pipe (void) |
ctor | |
~self_pipe (void) | |
dtor More... | |
+ | ~self_pipe (void) |
dtor | |
self_pipe (const self_pipe &)=delete | |
copy ctor More... | |
+ | self_pipe (const self_pipe &)=delete |
copy ctor | |
self_pipe & | operator= (const self_pipe &)=delete |
assignment operator More... | |
+self_pipe & | operator= (const self_pipe &)=delete |
assignment operator | |
fd_t | get_read_fd (void) const |
fd_t | get_read_fd (void) const |
fd_t | get_write_fd (void) const |
fd_t | get_write_fd (void) const |
void | notify (void) |
void | clr_buffer (void) |
-Private Attributes | |
fd_t | m_fds [2] |
tacopie::self_pipe::self_pipe | -( | -void | -) | -- |
ctor
- -tacopie::self_pipe::~self_pipe | -( | -void | -) | -- |
dtor
- -
-
|
- -delete | -
copy ctor
- -fd_t tacopie::self_pipe::get_read_fd | +fd_t tacopie::self_pipe::get_read_fd | ( | void | ) | @@ -219,7 +146,7 @@
fd_t tacopie::self_pipe::get_write_fd | +fd_t tacopie::self_pipe::get_write_fd | ( | void | ) | @@ -248,58 +175,6 @@
-
|
- -delete | -
assignment operator
- -
-
|
- -private | -
pipe file descriptors
-get_file(void) const | tacopie::tacopie_error | ||||||
get_line(void) const | tacopie::tacopie_error | ||||||
m_file | tacopie::tacopie_error | private | |||||
m_line | tacopie::tacopie_error | private | |||||
operator=(const tacopie_error &)=default | tacopie::tacopie_error | ||||||
tacopie_error(const std::string &what, const std::string &file, std::size_t line) | tacopie::tacopie_error | ||||||
tacopie_error(const tacopie_error &)=default | tacopie::tacopie_error |
Public Member Functions | |
tacopie_error (const std::string &what, const std::string &file, std::size_t line) | |
ctor More... | |
+ | tacopie_error (const std::string &what, const std::string &file, std::size_t line) |
ctor | |
~tacopie_error (void)=default | |
assignment operator More... | |
+ | ~tacopie_error (void)=default |
assignment operator | |
tacopie_error (const tacopie_error &)=default | |
copy ctor More... | |
+ | tacopie_error (const tacopie_error &)=default |
copy ctor | |
tacopie_error & | operator= (const tacopie_error &)=default |
assignment operator More... | |
+tacopie_error & | operator= (const tacopie_error &)=default |
assignment operator | |
const std::string & | get_file (void) const |
std::size_t | get_line (void) const |
-Private Attributes | |
std::string | m_file |
std::size_t | m_line |
specialized runtime_error used for tacopie error
-tacopie::tacopie_error::tacopie_error | -( | -const std::string & | -what, | -
- | - | const std::string & | -file, | -
- | - | std::size_t | -line | -
- | ) | -- |
ctor
- -
-
|
- -default | -
assignment operator
- -
-
|
- -default | -
copy ctor
- -
-
|
- -default | -
assignment operator
- -
-
|
- -private | -
file location of the error
- -
-
|
- -private | -
line location of the error
-#include <tcp_client.hpp>
Classes |
Public Member Functions | |
tcp_client (std::uint32_t num_io_workers=1) | |
ctor & dtor More... | |
+ | tcp_client (std::uint32_t num_io_workers=1) |
ctor & dtor | |
~tcp_client (void) | |
tcp_client (tcp_socket &&socket) | |
tcp_client (const tcp_client &)=delete | |
copy ctor More... | |
+ | tcp_client (const tcp_client &)=delete |
copy ctor | |
tcp_client & | operator= (const tcp_client &)=delete |
assignment operator More... | |
+tcp_client & | operator= (const tcp_client &)=delete |
assignment operator | |
bool | operator== (const tcp_client &rhs) const |
void | set_on_disconnection_handler (const disconnection_handler_t &disconnection_handler) |
-Private Member Functions | |
void | call_disconnection_handler (void) |
void | on_read_available (fd_t fd) |
void | on_write_available (fd_t fd) |
void | clear_read_requests (void) |
void | clear_write_requests (void) |
async_read_callback_t | process_read (read_result &result) |
async_write_callback_t | process_write (write_result &result) |
-Private Attributes | |
std::shared_ptr< io_service > | m_io_service |
tacopie::tcp_socket | m_socket |
std::atomic< bool > | m_is_connected = ATOMIC_VAR_INIT(false) |
std::queue< read_request > | m_read_requests |
std::queue< write_request > | m_write_requests |
std::mutex | m_read_requests_mtx |
std::mutex | m_write_requests_mtx |
disconnection_handler_t | m_disconnection_handler |
tacopie::tcp_client::tcp_client | -( | -std::uint32_t | -num_io_workers = 1 | ) | -- |
ctor & dtor
- -tacopie::tcp_client::~tcp_client | -( | -void | -) | -- |
-
|
- -delete | -
copy ctor
-
-
|
- -private | -
Call the user-defined disconnection handler
- -
-
|
- -private | -
Clear pending read requests (basically empty the queue of read requests)
- -
-
|
- -private | -
Clear pending write requests (basically empty the queue of write requests)
-
-
|
- -private | -
io service read callback called by the io service whenever the socket is readable
-fd | file description of the socket for which the read is available |
-
|
- -private | -
io service write callback called by the io service whenever the socket is writable
-fd | file description of the socket for which the write is available |
-
|
- -delete | -
assignment operator
-
-
|
- -private | -
process read operations when available basically called whenever on_read_available is called and try to read from the socket handle possible case of failure and fill in the result
-result | result of the read operation |
-
|
- -private | -
process write operations when available basically called whenever on_write_available is called and try to write to the socket handle possible case of failure and fill in the result
-result | result of the write operation |
-
|
- -private | -
disconnection handler
- -
-
|
- -private | -
store io_service prevent deletion of io_service before the tcp_client itself
- -
-
|
- -private | -
whether the client is currently connected or not
- -
-
|
- -private | -
read requests
- -
-
|
- -private | -
read requests thread safety
- -
-
|
- -private | -
client socket
- -
-
|
- -private | -
write requests
- -
-
|
- -private | -
write requests thread safety
-Public Member Functions | |
tcp_server (void) | |
ctor More... | |
+ | tcp_server (void) |
ctor | |
~tcp_server (void) | |
dtor More... | |
+ | ~tcp_server (void) |
dtor | |
tcp_server (const tcp_server &)=delete | |
copy ctor More... | |
+ | tcp_server (const tcp_server &)=delete |
copy ctor | |
tcp_server & | operator= (const tcp_server &)=delete |
assignment operator More... | |
+tcp_server & | operator= (const tcp_server &)=delete |
assignment operator | |
bool | operator== (const tcp_server &rhs) const |
const std::list< std::shared_ptr< tacopie::tcp_client > > & | get_clients (void) const |
-Private Member Functions | |
void | on_read_available (fd_t fd) |
void | on_client_disconnected (const std::shared_ptr< tcp_client > &client) |
-Private Attributes | |
std::shared_ptr< io_service > | m_io_service |
tacopie::tcp_socket | m_socket |
std::atomic< bool > | m_is_running = ATOMIC_VAR_INIT(false) |
std::list< std::shared_ptr< tacopie::tcp_client > > | m_clients |
std::mutex | m_clients_mtx |
on_new_connection_callback_t | m_on_new_connection_callback |
tacopie::tcp_server is the class providing TCP Server features. The tcp_client works entirely asynchronously, waiting for the io_service to notify whenever a new client wished to connect.
@@ -155,75 +135,6 @@tacopie::tcp_server::tcp_server | -( | -void | -) | -- |
ctor
- -tacopie::tcp_server::~tcp_server | -( | -void | -) | -- |
dtor
- -
-
|
- -delete | -
copy ctor
-
-
|
- -private | -
client disconnected called whenever a client disconnected from the tcp_server
-client | disconnected client |
-
|
- -private | -
io service read callback
-fd | socket that triggered the read callback |
-
|
- -delete | -
assignment operator
-
-
|
- -private | -
clients
- -
-
|
- -private | -
clients thread safety
- -
-
|
- -private | -
store io_service prevent deletion of io_service before the tcp_server itself
- -
-
|
- -private | -
whether the server is currently running or not
- -
-
|
- -private | -
on new connection callback
- -
-
|
- -private | -
server socket
-accept(void) | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bind(const std::string &host, std::uint32_t port) | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
check_or_set_type(type t) | tacopie::tcp_socket | private | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
close(void) | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
connect(const std::string &host, std::uint32_t port, std::uint32_t timeout_msecs=0) | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
create_socket_if_necessary(void) | tacopie::tcp_socket | private | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
close(void) | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
connect(const std::string &host, std::uint32_t port, std::uint32_t timeout_msecs=0) | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
get_fd(void) const | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
get_host(void) const | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
get_port(void) const | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
get_type(void) const | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
listen(std::size_t max_connection_queue) | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
m_fd | tacopie::tcp_socket | private | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
m_host | tacopie::tcp_socket | private | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
m_port | tacopie::tcp_socket | private | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
m_type | tacopie::tcp_socket | private | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
operator!=(const tcp_socket &rhs) const | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
operator=(const tcp_socket &)=delete | tacopie::tcp_socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
operator==(const tcp_socket &rhs) const | tacopie::tcp_socket |
Public Types | |
enum | type { type::CLIENT, -type::SERVER, -type::UNKNOWN + |
enum | type { CLIENT, +SERVER, +UNKNOWN } |
Public Member Functions | |
tcp_socket (void) | |
ctor More... | |
+ | tcp_socket (void) |
ctor | |
~tcp_socket (void)=default | |
dtor More... | |
+ | ~tcp_socket (void)=default |
dtor | |
tcp_socket (fd_t fd, const std::string &host, std::uint32_t port, type t) | |
tcp_socket (fd_t fd, const std::string &host, std::uint32_t port, type t) | |
tcp_socket (tcp_socket &&) | |
move ctor More... | |
+ | tcp_socket (tcp_socket &&) |
move ctor | |
tcp_socket (const tcp_socket &)=delete | |
copy ctor More... | |
+ | tcp_socket (const tcp_socket &)=delete |
copy ctor | |
tcp_socket & | operator= (const tcp_socket &)=delete |
assignment operator More... | |
+tcp_socket & | operator= (const tcp_socket &)=delete |
assignment operator | |
bool | operator== (const tcp_socket &rhs) const |
void | set_type (type t) |
fd_t | get_fd (void) const |
fd_t | get_fd (void) const |
-Private Member Functions | |
void | create_socket_if_necessary (void) |
void | check_or_set_type (type t) |
-Private Attributes | |
fd_t | m_fd |
std::string | m_host |
std::uint32_t | m_port |
type | m_type |
tacopie::tcp_socket is the class providing low-level TCP socket features. The tcp_socket provides a simple but convenient abstraction to unix and windows sockets. It also provides a socket type checker to ensure that server-only operations are only processable on server sockets, and client-only operations are only processable on client sockets.
@@ -176,65 +161,12 @@possible types of a TCP socket, either a client or a server type is used to prevent the used of client specific operations on a server socket (and vice-versa)
UNKNOWN is used when socket type could not be determined for now
-Enumerator | |
---|---|
CLIENT | |
SERVER | |
UNKNOWN |
tacopie::tcp_socket::tcp_socket | -( | -void | -) | -- |
ctor
- -
-
|
- -default | -
dtor
- -tacopie::tcp_socket::tcp_socket | -( | -tcp_socket && | -) | -- |
move ctor
- -
-
|
- -delete | -
copy ctor
-
-
|
- -private | -
check whether the current socket has an approriate type for that kind of operation if current type is UNKNOWN, update internal type with given type
-t | expected type of our socket to process the operation |
-
|
- -private | -
create a new socket if no socket has been initialized yet
-fd_t tacopie::tcp_socket::get_fd | +fd_t tacopie::tcp_socket::get_fd | ( | void | ) | @@ -630,34 +454,6 @@
-
|
- -delete | -
assignment operator
-
-
|
- -private | -
fd associated to the socket
- -
-
|
- -private | -
socket hostname information
- -
-
|
- -private | -
socket port information
- -
-
|
- -private | -
type of the socket
-This is the complete list of members for tacopie::utils::thread_pool, including all inherited members.
#include <thread_pool.hpp>
Public Types | |
thread_pool (std::size_t nb_threads) | |
~thread_pool (void) | |
dtor More... | |
+ | ~thread_pool (void) |
dtor | |
thread_pool (const thread_pool &)=delete | |
copy ctor More... | |
+ | thread_pool (const thread_pool &)=delete |
copy ctor | |
thread_pool & | operator= (const thread_pool &)=delete |
assignment operator More... | |
+thread_pool & | operator= (const thread_pool &)=delete |
assignment operator | |
void | add_task (const task_t &task) |
void | set_nb_threads (std::size_t nb_threads) |
-Private Member Functions | |
void | run (void) |
task_t | fetch_task (void) |
bool | should_stop (void) const |
-Private Attributes | |
std::vector< std::thread > | m_workers |
std::size_t | m_nb_threads |
std::atomic< bool > | m_should_stop = ATOMIC_VAR_INIT(false) |
std::queue< task_t > | m_tasks |
std::mutex | m_tasks_mtx |
std::condition_variable | m_tasks_condvar |
tacopie::utils::thread_pool::~thread_pool | -( | -void | -) | -- |
dtor
- -
-
|
- -delete | -
copy ctor
-
-
|
- -private | -
retrieve a new task fetch the first element in the queue, or wait if no task are available may return null if the threadpool is stopped
-
-
|
- -delete | -
assignment operator
- -
-
|
- -private | -
worker main loop
-
-
|
- -private | -
stop the thread pool and wait for workers completion if some tasks are pending, they won't be executed
-
-
|
- -private | -
number of threads allowed
- -
-
|
- -private | -
whether the thread_pool should stop or not
- -
-
|
- -private | -
tasks
- -
-
|
- -private | -
task condvar to sync on tasks changes
- -
-
|
- -private | -
tasks thread safety
- -
-
|
- -private | -
threads
--Directories | |
directory | tacopie |
-Files | |
file | io_service.hpp [code] |
file | self_pipe.hpp [code] |
file | tcp_client.hpp [code] |
file | tcp_server.hpp [code] |
file | tcp_socket.hpp [code] |
-Files | |
file | error.hpp [code] |
file | logger.hpp [code] |
file | thread_pool.hpp [code] |
file | typedefs.hpp [code] |
Directories | |
directory | network |
directory | utils |
▼ includes | |
▼ tacopie | |
▼ network | |
io_service.hpp | |
self_pipe.hpp | |
tcp_client.hpp | |
tcp_server.hpp | |
tcp_socket.hpp | |
io_service.hpp | |
self_pipe.hpp | |
tcp_client.hpp | |
tcp_server.hpp | |
tcp_socket.hpp | |
▼ utils | |
error.hpp | |
logger.hpp | |
thread_pool.hpp | |
typedefs.hpp | |
error.hpp | |
logger.hpp | |
thread_pool.hpp | |
typedefs.hpp |
This is the complete list of members for tacopie::tcp_client::read_request, including all inherited members.
async_read_callback | tacopie::tcp_client::read_request | |
size | tacopie::tcp_client::read_request | |
async_read_callback (defined in tacopie::tcp_client::read_request) | tacopie::tcp_client::read_request | |
size (defined in tacopie::tcp_client::read_request) | tacopie::tcp_client::read_request |
Public Attributes | |
std::size_t | size |
+std::size_t | size |
async_read_callback_t | async_read_callback |
+async_read_callback_t | async_read_callback |
async_read_callback_t tacopie::tcp_client::read_request::async_read_callback | -
std::size_t tacopie::tcp_client::read_request::size | -
This is the complete list of members for tacopie::tcp_client::read_result, including all inherited members.
buffer | tacopie::tcp_client::read_result | |
success | tacopie::tcp_client::read_result | |
buffer (defined in tacopie::tcp_client::read_result) | tacopie::tcp_client::read_result | |
success (defined in tacopie::tcp_client::read_result) | tacopie::tcp_client::read_result |
Public Attributes | |
bool | success |
+bool | success |
std::vector< char > | buffer |
+std::vector< char > | buffer |
std::vector<char> tacopie::tcp_client::read_result::buffer | -
bool tacopie::tcp_client::read_result::success | -
This is the complete list of members for tacopie::tcp_client::write_request, including all inherited members.
async_write_callback | tacopie::tcp_client::write_request | |
buffer | tacopie::tcp_client::write_request | |
async_write_callback (defined in tacopie::tcp_client::write_request) | tacopie::tcp_client::write_request | |
buffer (defined in tacopie::tcp_client::write_request) | tacopie::tcp_client::write_request |
Public Attributes | |
std::vector< char > | buffer |
+std::vector< char > | buffer |
async_write_callback_t | async_write_callback |
+async_write_callback_t | async_write_callback |
async_write_callback_t tacopie::tcp_client::write_request::async_write_callback | -
std::vector<char> tacopie::tcp_client::write_request::buffer | -
This is the complete list of members for tacopie::tcp_client::write_result, including all inherited members.
Public Attributes | |
bool | success |
+bool | success |
std::size_t | size |
+std::size_t | size |
std::size_t tacopie::tcp_client::write_result::size | -
bool tacopie::tcp_client::write_result::success | -