-#ifdef USE_KQUEUE
-#define engine_structs kqueue_structs
-#endif
-#ifdef USE_SELECT
-#define engine_structs select_structs
-#endif
-
-#define select_init while(0);
-
-#define kqueue_init kq = kqueue(); \
- lkq = kqueue(); \
- skq = kqueue(); \
- if ((kq == -1) || (lkq == -1) || (skq == -1)) \
- { \
- log(DEFAULT,"main: kqueue() failed!"); \
- printf("ERROR: could not initialise kqueue event system. Shutting down.\n"); \
- Exit(ERROR); \
- }
-
-#define epoll_init ep = epoll_create(MAXCLIENTS); \
- lep = epoll_create(32); \
- sep = epoll_create(128); \
- if ((ep == -1) || (lep == -1) || (sep == -1)) \
- { \
- log(DEFAULT,"main: epoll_create() failed!"); \
- printf("ERROR: could not initialise epoll event system. Shutting down.\n"); \
- Exit(ERROR); \
- }
-
-
-#ifdef USE_EPOLL
-#define engine_init epoll_init
-#endif
-#ifdef USE_KQUEUE
-#define engine_init kqueue_init
-#endif
-#ifdef USE_SELECT
-#define engine_init select_init
-#endif
-
-#define select_server_fill log(DEFAULT,"Using standard select socket engine.");
-
-#define epoll_server_fill log(DEFAULT,"epoll socket engine is enabled. Filling listen list. boundPortcount=%d",boundPortCount); \
- for (count = 0; count < boundPortCount; count++) \
- { \
- struct epoll_event ev; \
- log(DEBUG,"epoll: Add listening socket to events, ep=%d socket=%d",lep,openSockfd[count]); \
- ev.events = EPOLLIN | EPOLLET; \
- ev.data.fd = openSockfd[count]; \
- int i = epoll_ctl(lep, EPOLL_CTL_ADD, openSockfd[count], &ev); \
- if (i < 0) \
- { \
- log(DEFAULT,"main: add listen ports, epoll_ctl failed!"); \
- printf("ERROR: could not initialise listening sockets in epoll list. Shutting down.\n"); \
- Exit(ERROR); \
- } \
- } \
- for (int t = 0; t != SERVERportCount; t++) \
- { \
- struct epoll_event ev; \
- log(DEBUG,"epoll: Add listening server socket to events, ep=%d socket=%d",sep,me[t]->fd); \
- ev.events = EPOLLIN | EPOLLET; \
- ev.data.fd = me[t]->fd; \
- int i = epoll_ctl(sep, EPOLL_CTL_ADD, me[t]->fd, &ev); \
- if (i == -1) \
- { \
- log(DEFAULT,"main: add server listen ports, epoll_ctl failed!"); \
- printf("ERROR: could not initialise server listening sockets in epoll list. Shutting down.\n"); \
- Exit(ERROR); \
- } \
- }
-
-#define kqueue_server_fill log(DEFAULT,"kqueue socket engine is enabled. Filling listen list."); \
- for (count = 0; count < boundPortCount; count++) \
- { \
- struct kevent ke; \
- log(DEBUG,"kqueue: Add listening socket to events, kq=%d socket=%d",lkq,openSockfd[count]); \
- EV_SET(&ke, openSockfd[count], EVFILT_READ, EV_ADD, 0, MaxConn, NULL); \
- int i = kevent(lkq, &ke, 1, 0, 0, NULL); \
- if (i == -1) \
- { \
- log(DEFAULT,"main: add listen ports to kqueue failed!"); \
- printf("ERROR: could not initialise listening sockets in kqueue. Shutting down.\n"); \
- Exit(ERROR); \
- } \
- } \
- for (int t = 0; t != SERVERportCount; t++) \
- { \
- struct kevent ke; \
- if (me[t]) \
- { \
- log(DEBUG,"kqueue: Add listening SERVER socket to events, kq=%d socket=%d",skq,me[t]->fd); \
- EV_SET(&ke, me[t]->fd, EVFILT_READ, EV_ADD, 0, MaxConn, NULL); \
- int i = kevent(skq, &ke, 1, 0, 0, NULL); \
- if (i == -1) \
- { \
- log(DEFAULT,"main: add server listen ports to kqueue failed!"); \
- printf("ERROR: could not initialise listening server sockets in kqueue. Shutting down.\n"); \
- Exit(ERROR); \
- } \
- } \
- }
-
-#ifdef USE_EPOLL
-#define engine_server_fill epoll_server_fill
-#endif
-#ifdef USE_KQUEUE
-#define engine_server_fill kqueue_server_fill
-#endif
-#ifdef USE_SELECT
-#define engine_server_fill select_server_fill
-#endif
-
-
-#define kqueue_delete_fd struct kevent ke; \
- EV_SET(&ke, user->fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); \
- int i = kevent(kq, &ke, 1, 0, 0, NULL); \
- if (i == -1) \
- { \
- log(DEBUG,"kqueue: Failed to remove user from queue!"); \
- }
-
-#define epoll_delete_fd struct epoll_event ev; \
- ev.events = EPOLLIN | EPOLLET; \
- ev.data.fd = user->fd; \
- int i = epoll_ctl(ep, EPOLL_CTL_DEL, user->fd, &ev); \
- if (i < 0) \
- { \
- log(DEBUG,"epoll: List deletion failure!"); \
- }
-
-#define select_delete_fd while(0);
-
-
-#ifdef USE_EPOLL
-#define engine_delete_fd epoll_delete_fd
-#endif
-#ifdef USE_KQUEUE
-#define engine_delete_fd kqueue_delete_fd
-#endif
-#ifdef USE_SELECT
-#define engine_delete_fd select_delete_fd
-#endif
-
-#define select_add_fd while(0);
-
-#define epoll_add_fd struct epoll_event ev; \
- log(DEBUG,"epoll: Adduser to events, ep=%d socket=%d",ep,socket); \
- ev.events = EPOLLIN | EPOLLET; \
- ev.data.fd = socket; \
- int i = epoll_ctl(ep, EPOLL_CTL_ADD, socket, &ev); \
- if (i < 0) \
- { \
- log(DEBUG,"epoll: List insertion failure!"); \
- }
-
-#define kqueue_add_fd struct kevent ke; \
- log(DEBUG,"kqueue: Add user to events, kq=%d socket=%d",kq,socket);\
- EV_SET(&ke, socket, EVFILT_READ, EV_ADD, 0, 0, NULL); \
- int i = kevent(kq, &ke, 1, 0, 0, NULL); \
- if (i == -1) \
- { \
- log(DEBUG,"kqueue: List insertion failure!"); \
- }
-
-#ifdef USE_EPOLL
-#define engine_add_fd epoll_add_fd
-#endif
-#ifdef USE_KQUEUE
-#define engine_add_fd kqueue_add_fd
-#endif
-#ifdef USE_SELECT
-#define engine_add_fd select_add_fd
-#endif
-
-#ifdef USE_KQUEUE
-#define engine_name "kqueue"
-#endif
-#ifdef USE_SELECT
-#define engine_name "select"
-#endif
-#ifdef USE_EPOLL
-#define engine_name "epoll"
-#endif
-