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(); } }
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(); } }