@@ -103,51 +103,29 @@ Socket::~Socket()
103103int Socket::select (SocketList& readList, SocketList& writeList, SocketList& exceptList, const Poco::Timespan& timeout)
104104{
105105#if defined(POCO_HAVE_FD_EPOLL)
106- #warning "Poco use EPOLL for Socket::select"
107- //
108- // Size of epoll queue
109- //
106+
110107 int epoll_size = readList.size () + writeList.size () + exceptList.size ();
111108
112- //
113- // If nothing to do, return 0
114- //
115- if (epoll_size == 0 )
116- return 0 ;
109+ if (epoll_size == 0 ) return 0 ;
117110
118- //
119- // Fill epoll queue
120- //
121111 int epollfd = -1 ;
122112 {
123- //
124- // Epoll events to be filled
125- //
126113 struct epoll_event events_in[epoll_size];
127114 memset (events_in, 0 , sizeof (events_in));
128115
129- //
130- // Current epoll event to be filled
131- //
132116 struct epoll_event * event_last = events_in;
133117
134118 for (SocketList::iterator it = readList.begin (); it != readList.end (); ++it)
135119 {
136120 if (it->sockfd () != POCO_INVALID_SOCKET)
137121 {
138- //
139- // Try to find file descriptor in epoll events
140- //
141122 struct epoll_event * e = events_in;
142123 for (; e != event_last; ++e)
143124 {
144125 if (reinterpret_cast <Socket*> (e->data .ptr )->sockfd () == it->sockfd ())
145126 break ;
146127 }
147128
148- //
149- // If not found allocate new epoll event
150- //
151129 if (e == event_last)
152130 {
153131 e->data .ptr = &(*it);
@@ -163,19 +141,13 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
163141 {
164142 if (it->sockfd () != POCO_INVALID_SOCKET)
165143 {
166- //
167- // Try to find file descriptor in epoll events
168- //
169144 struct epoll_event * e = events_in;
170145 for (; e != event_last; ++e)
171146 {
172147 if (reinterpret_cast <Socket*> (e->data .ptr )->sockfd () == it->sockfd ())
173148 break ;
174149 }
175150
176- //
177- // If not found allocate new epoll event
178- //
179151 if (e == event_last)
180152 {
181153 e->data .ptr = &(*it);
@@ -191,19 +163,13 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
191163 {
192164 if (it->sockfd () != POCO_INVALID_SOCKET)
193165 {
194- //
195- // Try to find file descriptor in epoll events
196- //
197166 struct epoll_event * e = events_in;
198167 for (; e != event_last; ++e)
199168 {
200169 if (reinterpret_cast <Socket*> (e->data .ptr )->sockfd () == it->sockfd ())
201170 break ;
202171 }
203172
204- //
205- // If not found allocate new epoll event
206- //
207173 if (e == event_last)
208174 {
209175 e->data .ptr = &(*it);
@@ -215,14 +181,8 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
215181 }
216182 }
217183
218- //
219- // Recalculate real epoll queue size
220- //
221184 epoll_size = event_last - events_in;
222185
223- //
224- // Allocate epoll queue
225- //
226186 epollfd = epoll_create (epoll_size);
227187 if (epollfd < 0 )
228188 {
@@ -232,9 +192,6 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
232192 SocketImpl::error (std::string (" Can't create epoll - " ) + buf);
233193 }
234194
235- //
236- // Place epoll events into epoll queue
237- //
238195 for (struct epoll_event * e = events_in; e != event_last; ++e)
239196 {
240197 if (epoll_ctl (epollfd, EPOLL_CTL_ADD, reinterpret_cast <Socket*> (e->data .ptr )->sockfd (), e) < 0 )
@@ -269,9 +226,6 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
269226 }
270227 while (rc < 0 && SocketImpl::lastError () == POCO_EINTR);
271228
272- //
273- // Close epoll queue
274- //
275229 ::close (epollfd);
276230
277231 if (rc < 0 ) SocketImpl::error ();
@@ -294,21 +248,11 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
294248 return readList.size () + writeList.size () + exceptList.size ();
295249
296250#elif defined(POCO_HAVE_FD_KQUEUE)
297- #warning "Poco use KQUEUE for Socket::select"
298- //
299- // Size of kqueue queue
300- //
251+
301252 int kqueue_size = readList.size () + writeList.size () + exceptList.size ();
302253
303- //
304- // If nothing to do, return 0
305- //
306- if (kqueue_size == 0 )
307- return 0 ;
254+ if (kqueue_size == 0 ) return 0 ;
308255
309- //
310- // Create kevent queue
311- //
312256 int kqueuefd = kqueue ();
313257 if (kqueuefd < 0 )
314258 {
@@ -318,17 +262,11 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
318262 SocketImpl::error (std::string (" Can't create kqueue - " ) + buf);
319263 }
320264
321- //
322- // Allocate in/out kevent queues
323- //
324265 struct kevent events_in[kqueue_size];
325266 struct kevent events_out[kqueue_size];
326267 memset (&events_in , 0 , sizeof (events_in));
327268 memset (&events_out, 0 , sizeof (events_out));
328269
329- //
330- // Add sockets to events_in list for appropriate event
331- //
332270 for (size_t i = 0 ; i < readList.size (); ++i)
333271 {
334272 if (readList[i].sockfd () != POCO_INVALID_SOCKET)
@@ -373,9 +311,6 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
373311 }
374312 while (rc < 0 && SocketImpl::lastError () == POCO_EINTR);
375313
376- //
377- // Close kqueue
378- //
379314 ::close (kqueuefd);
380315
381316 if (rc < 0 ) SocketImpl::error ();
@@ -398,7 +333,7 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
398333 return readList.size () + writeList.size () + exceptList.size ();
399334
400335#elif defined(POCO_HAVE_FD_POLL)
401- # warning "Poco use POLL for Socket::select"
336+
402337 nfds_t nfd = readList.size () + writeList.size () + exceptList.size ();
403338 if (0 == nfd) return 0 ;
404339
@@ -478,11 +413,10 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce
478413 std::swap (writeList, readyWriteList);
479414 std::swap (exceptList, readyExceptList);
480415
481- // return rc;
482416 return readList.size () + writeList.size () + exceptList.size ();
483417
484418#else
485- # warning "Poco use SELECT for Socket::select"
419+
486420 fd_set fdRead;
487421 fd_set fdWrite;
488422 fd_set fdExcept;
0 commit comments