IOPoll* createIOPoll(PollType poll_type) { switch (poll_type) { case PollType::POLL: return createVPoll(); case PollType::SELECT: return createSelectPoll(); case PollType::KQUEUE: #ifdef KUMA_OS_MAC return createKQueue(); #else return createDefaultIOPoll(); #endif case PollType::EPOLL: #ifdef KUMA_OS_LINUX return createEPoll(); #else return createDefaultIOPoll(); #endif case PollType::IOCP: #ifdef KUMA_OS_WIN return createIocpPoll(); #else return createDefaultIOPoll(); #endif default: return createDefaultIOPoll(); } }
void startServer(int port,int (*fnPtr)(int, char*, int)) { struct epoll_event *events; int socketFD; int epollFD; socketFD = validateSocket(port); bindandListenSocket(socketFD); epollFD = createEPoll(); setEPollSocket(epollFD, socketFD, &events); eventLoop(socketFD, epollFD, events, fnPtr); close(socketFD); }
IOPoll* createDefaultIOPoll() { #ifdef KUMA_OS_WIN return createSelectPoll(); #elif defined(KUMA_OS_LINUX) return createEPoll(); #elif defined(KUMA_OS_MAC) return createVPoll(); #else return createSelectPoll(); #endif }
IOPoll* createIOPoll(PollType poll_type) { switch (poll_type) { case POLL_TYPE_POLL: return createVPoll(); case POLL_TYPE_SELECT: return createSelectPoll(); case POLL_TYPE_EPOLL: #ifdef KUMA_OS_LINUX return createEPoll(); #endif default: return createDefaultIOPoll(); } }
IOPoll* createDefaultIOPoll() { #ifdef KUMA_OS_WIN if (connect_ex && accept_ex) { return createIocpPoll(); } return createSelectPoll(); #elif defined(KUMA_OS_LINUX) return createEPoll(); #elif defined(KUMA_OS_MAC) return createKQueue(); //return createVPoll(); #else return createSelectPoll(); #endif }