@@ -59,17 +59,17 @@ EdgeTriggeredEvents::~EdgeTriggeredEvents()
59
59
}
60
60
}
61
61
62
- bool EdgeTriggeredEvents::AddSocket (SOCKET socket ) const
62
+ bool EdgeTriggeredEvents::RegisterEntity ( int entity, std::string entity_name ) const
63
63
{
64
64
assert (m_valid);
65
65
66
66
if (m_mode == SocketEventsMode::EPoll) {
67
67
#ifdef USE_EPOLL
68
68
epoll_event event;
69
- event.data .fd = socket ;
69
+ event.data .fd = entity ;
70
70
event.events = EPOLLIN;
71
- if (epoll_ctl (m_fd, EPOLL_CTL_ADD, socket , &event) != 0 ) {
72
- LogPrintf (" Failed to add socket to epoll fd (epoll_ctl returned error %s)\n " ,
71
+ if (epoll_ctl (m_fd, EPOLL_CTL_ADD, entity , &event) != 0 ) {
72
+ LogPrintf (" Failed to add %s to epoll fd (epoll_ctl returned error %s)\n " , entity_name ,
73
73
NetworkErrorString (WSAGetLastError ()));
74
74
return false ;
75
75
}
@@ -79,9 +79,9 @@ bool EdgeTriggeredEvents::AddSocket(SOCKET socket) const
79
79
} else if (m_mode == SocketEventsMode::KQueue) {
80
80
#ifdef USE_KQUEUE
81
81
struct kevent event;
82
- EV_SET (&event, socket , EVFILT_READ, EV_ADD, 0 , 0 , nullptr );
82
+ EV_SET (&event, entity , EVFILT_READ, EV_ADD, 0 , 0 , nullptr );
83
83
if (kevent (m_fd, &event, 1 , nullptr , 0 , nullptr ) != 0 ) {
84
- LogPrintf (" Failed to add socket to kqueue fd (kevent returned error %s)\n " ,
84
+ LogPrintf (" Failed to add %s to kqueue fd (kevent returned error %s)\n " , entity_name ,
85
85
NetworkErrorString (WSAGetLastError ()));
86
86
return false ;
87
87
}
@@ -94,14 +94,14 @@ bool EdgeTriggeredEvents::AddSocket(SOCKET socket) const
94
94
return true ;
95
95
}
96
96
97
- bool EdgeTriggeredEvents::RemoveSocket (SOCKET socket ) const
97
+ bool EdgeTriggeredEvents::UnregisterEntity ( int entity, std::string entity_name ) const
98
98
{
99
99
assert (m_valid);
100
100
101
101
if (m_mode == SocketEventsMode::EPoll) {
102
102
#ifdef USE_EPOLL
103
- if (epoll_ctl (m_fd, EPOLL_CTL_DEL, socket , nullptr ) != 0 ) {
104
- LogPrintf (" Failed to remove socket from epoll fd (epoll_ctl returned error %s)\n " ,
103
+ if (epoll_ctl (m_fd, EPOLL_CTL_DEL, entity , nullptr ) != 0 ) {
104
+ LogPrintf (" Failed to remove %s from epoll fd (epoll_ctl returned error %s)\n " , entity_name ,
105
105
NetworkErrorString (WSAGetLastError ()));
106
106
return false ;
107
107
}
@@ -111,9 +111,9 @@ bool EdgeTriggeredEvents::RemoveSocket(SOCKET socket) const
111
111
} else if (m_mode == SocketEventsMode::KQueue) {
112
112
#ifdef USE_KQUEUE
113
113
struct kevent event;
114
- EV_SET (&event, socket , EVFILT_READ, EV_DELETE, 0 , 0 , nullptr );
114
+ EV_SET (&event, entity , EVFILT_READ, EV_DELETE, 0 , 0 , nullptr );
115
115
if (kevent (m_fd, &event, 1 , nullptr , 0 , nullptr ) != 0 ) {
116
- LogPrintf (" Failed to remove socket from kqueue fd (kevent returned error %s)\n " ,
116
+ LogPrintf (" Failed to remove %s from kqueue fd (kevent returned error %s)\n " , entity_name ,
117
117
NetworkErrorString (WSAGetLastError ()));
118
118
return false ;
119
119
}
@@ -126,6 +126,38 @@ bool EdgeTriggeredEvents::RemoveSocket(SOCKET socket) const
126
126
return true ;
127
127
}
128
128
129
+ bool EdgeTriggeredEvents::AddSocket (SOCKET socket) const
130
+ {
131
+ return RegisterEntity (socket, " socket" );
132
+ }
133
+
134
+ bool EdgeTriggeredEvents::RemoveSocket (SOCKET socket) const
135
+ {
136
+ return UnregisterEntity (socket, " socket" );
137
+ }
138
+
139
+ bool EdgeTriggeredEvents::RegisterPipe (int wakeup_pipe)
140
+ {
141
+ if (m_pipe_registered) {
142
+ LogPrintf (" Pipe already registered, ignoring new registration request\n " );
143
+ return false ;
144
+ }
145
+ bool ret = RegisterEntity (wakeup_pipe, " wakeup pipe" );
146
+ if (ret) m_pipe_registered = true ;
147
+ return ret;
148
+ }
149
+
150
+ bool EdgeTriggeredEvents::UnregisterPipe (int wakeup_pipe)
151
+ {
152
+ if (!m_pipe_registered) {
153
+ LogPrintf (" No pipe currently registered to unregister, ignoring request\n " );
154
+ return false ;
155
+ }
156
+ bool ret = UnregisterEntity (wakeup_pipe, " wakeup pipe" );
157
+ if (ret) m_pipe_registered = false ;
158
+ return ret;
159
+ }
160
+
129
161
bool EdgeTriggeredEvents::RegisterEvents (SOCKET socket) const
130
162
{
131
163
assert (m_valid && socket != INVALID_SOCKET);
0 commit comments