23#ifndef SEMISYNC_SOURCE_SOCKET_LISTENER
24#define SEMISYNC_SOURCE_SOCKET_LISTENER
43 m_fds[index].events = 0;
49 for (uint i = 0; i < slaves.size(); i++) {
59 poll_fd.fd = slaves[i].sock_fd();
80class Select_socket_listener {
84 bool listen_on_sockets() {
87 struct timeval tv = {1, 0};
89 return select(m_max_fd + 1, &m_fds,
nullptr,
nullptr, &tv);
92 bool is_socket_active(
int index) {
93 return FD_ISSET(m_slaves[index].sock_fd(), &m_fds);
96 void clear_socket_info(
int index) {
97 FD_CLR(m_slaves[index].sock_fd(), &m_init_fds);
102 FD_ZERO(&m_init_fds);
103 for (uint i = 0; i < slaves.size(); i++) {
112 my_socket socket_id = slaves[i].sock_fd();
113 m_max_fd = (socket_id > m_max_fd ? socket_id : m_max_fd);
121 FD_SET(socket_id, &m_init_fds);
122 m_slaves.push_back(slaves[i]);
126 uint number_of_slave_sockets() {
return m_slaves.size(); }
128 Slave get_slave_obj(
int index) {
return m_slaves[index]; }
Definition: semisync_source_socket_listener.h:31
Poll_socket_listener()=default
std::vector< pollfd > m_fds
Definition: semisync_source_socket_listener.h:73
Slave get_slave_obj(int index)
Definition: semisync_source_socket_listener.h:69
uint number_of_slave_sockets()
Definition: semisync_source_socket_listener.h:67
Slave_vector m_slaves
Definition: semisync_source_socket_listener.h:72
bool is_socket_active(int index)
Definition: semisync_source_socket_listener.h:39
bool init_replica_sockets(Slave_vector &slaves)
Definition: semisync_source_socket_listener.h:46
void clear_socket_info(int index)
Definition: semisync_source_socket_listener.h:41
bool listen_on_sockets()
Definition: semisync_source_socket_listener.h:35
#define LogErr(severity, ecode,...)
Definition: log_builtins.h:842
#define INVALID_SOCKET
Definition: my_io.h:189
@ ERROR_LEVEL
Definition: my_loglevel.h:42
int my_socket
Definition: mysql.h:64
pollfd poll_fd
Definition: poll.h:49
stdx::expected< size_t, std::error_code > poll(poll_fd *fds, size_t num_fds, std::chrono::milliseconds timeout)
Definition: poll.h:52
std::vector< Slave > Slave_vector
Definition: semisync_source_ack_receiver.h:47
class Poll_socket_listener Socket_listener
Definition: semisync_source_socket_listener.h:76
#define FD_SETSIZE
Utility functions to check if a network address or name matches an interface on the machine we are ru...
Definition: sock_probe_win32.h:33
Definition: semisync_source_ack_receiver.h:36
struct pollfd pollfd
Definition: task_os.h:113