SpiecsEngine
 
Loading...
Searching...
No Matches

◆ Poll()

void Spices::Net::EPollPoller::Poll ( int timeoutMs,
ChannelList * activeChannels )
overridevirtual

Poll events on EventList.

Parameters
[in]timeoutMs.
[in,out]activeChannelsChannels that events happened.

Implements Spices::Net::Poller.

Definition at line 28 of file EPollPoller.cpp.

29 {
30 const int numEvents = epoll_wait(m_EPollFd, m_Events.data(), m_Events.size(), timeoutMs);
31 const int saveErrno = WSAGetLastError();
32
33 if (numEvents > 0)
34 {
35 FillActiveChannels(numEvents, activeChannels);
36
37 if (numEvents == m_Events.size())
38 {
39 m_Events.resize(m_Events.size() * 2);
40 }
41 }
42 else if (numEvents == 0)
43 {
44 SPICES_CORE_INFO("EPollPoller::Poll timeout")
45 }
46 else
47 {
48 if (saveErrno != ERROR_OPERATION_ABORTED)
49 {
50 std::stringstream ss;
51 ss << "EPollPoller::Poll Error: " << saveErrno;
52
53 SPICES_CORE_ERROR(ss.str())
54 }
55 }
56 }
HANDLE m_EPollFd
EPoll fd.
Definition EPollPoller.h:96
EventList m_Events
EventList.
void FillActiveChannels(int numEvents, ChannelList *activeChannels) const
Fill REvents to ChannelList.