22 KernelEventMechanism::KernelEventMechanism() : initialized(false), _psd(nullptr) {
27 KernelEventMechanism::~KernelEventMechanism() {
41 event.events = EPOLLET;
42 event.data.ptr = (
void*)cookie;
46 event.events|= EPOLLIN;
50 event.events|= EPOLLOUT;
60 std::string msg =
"Could not add epoll event: ";
61 msg+= strerror(errno);
80 std::string msg =
"Could not remove socket: ";
81 msg+= strerror(errno);
95 psd->epEventList.resize(psd->epEventListMax);
98 psd->ep = epoll_create1(0);
100 std::string msg =
"Could not create epoll: ";
101 msg+= strerror(errno);
127 while (
true ==
true) {
129 auto events = epoll_wait(psd->ep, psd->epEventList.data(), psd->epEventListMax, 5);
133 if (errno == EINTR) {
136 std::string msg =
"epoll_wait failed: ";
137 msg+= strerror(errno);
158 cookie = (
void*)event.data.ptr;
162 if ((event.events & EPOLLIN) == EPOLLIN) {
165 if ((event.events & EPOLLOUT) == EPOLLOUT) {
Interface to kernel event mechanismns.
void shutdownKernelEventMechanism()
Shutdowns the kernel event mechanism.
void removeSocket(NetworkSocket *socket)
Removes a socket.
void setSocketInterest(NetworkSocket *socket, const NIOInterest lastInterest, const NIOInterest interest, const void *cookie)
Sets a non blocked socket io interest.
int doKernelEventMechanism()
Do the kernel event mechanism.
void initKernelEventMechanism(const unsigned int maxSockets)
Initializes the kernel event mechanism.
void decodeKernelEvent(const unsigned int index, NIOInterest &interest, void *&cookie)
Decodes a kernel event.
Kernel event mechanism exception class.
Base class of network sockets.
const NIOInterest NIO_INTEREST_NONE
const NIOInterest NIO_INTEREST_READ
uint8_t NIOInterest
type definition for network IO interest
const NIOInterest NIO_INTEREST_WRITE