kqueue usage removed
authorVictor Kirhenshtein <victor@netxms.org>
Sun, 11 Dec 2016 19:50:44 +0000 (21:50 +0200)
committerVictor Kirhenshtein <victor@netxms.org>
Sun, 11 Dec 2016 19:50:44 +0000 (21:50 +0200)
include/nms_util.h
src/libnetxms/icmp.cpp
src/libnetxms/icmp6.cpp
src/libnetxms/spoll.cpp

index a870306..c0e20f4 100644 (file)
 #include <poll.h>
 #endif
 
-#if HAVE_SYS_EVENT_H
-#include <sys/event.h>
-#endif
-
 #if HAVE_BYTESWAP_H
 #include <byteswap.h>
 #endif
@@ -1556,12 +1552,7 @@ class LIBNETXMS_EXPORTABLE SocketPoller
 private:
    bool m_write;
    int m_count;
-#if HAVE_KQUEUE
-   int m_queue;
-   struct kevent m_sockets[SOCKET_POLLER_MAX_SOCKETS];
-   int m_numEvents;
-   struct kevent m_events[SOCKET_POLLER_MAX_SOCKETS];
-#elif HAVE_POLL
+#if HAVE_POLL
    struct pollfd m_sockets[SOCKET_POLLER_MAX_SOCKETS];
 #else
    fd_set m_sockets;
index c0d354c..90084d0 100644 (file)
@@ -202,61 +202,18 @@ static UINT32 WaitForReply(int sock, UINT32 addr, UINT16 sequence, UINT32 dwTime
    UINT32 dwTimeLeft, dwElapsedTime;
    ECHOREPLY reply;
 
-#ifdef USE_KQUEUE
-       int kq;
-       struct kevent ke;
-       struct timespec ts;
-       socklen_t iAddrLen;
-       struct sockaddr_in saSrc;
-
-       kq = kqueue();
-       EV_SET(&ke, sock, EVFILT_READ, EV_ADD, 0, 5, NULL);
-       kevent(kq, &ke, 1, NULL, 0, NULL);
-
-       // Wait for response
-       for(dwTimeLeft = dwTimeout; dwTimeLeft > 0;)
-       {
-               UINT64 qwStartTime = GetCurrentTimeMs();
-
-               ts.tv_sec = dwTimeLeft / 1000;
-               ts.tv_nsec = (dwTimeLeft % 1000) * 1000 * 1000;
-
-               memset(&ke, 0, sizeof(ke));
-               if (kevent(kq, NULL, 0, &ke, 1, &ts) > 0)
-#else    /* not USE_KQUEUE */
-
-#if HAVE_POLL
-   struct pollfd fds;
-#else
-   struct timeval timeout;
-   fd_set rdfs;
-#endif
+   SocketPoller sp;
    socklen_t iAddrLen;
    struct sockaddr_in saSrc;
 
    // Wait for response
    for(dwTimeLeft = dwTimeout; dwTimeLeft > 0;)
    {
-#if HAVE_POLL
-               fds.fd = sock;
-               fds.events = POLLIN;
-               fds.revents = POLLIN;
-#else
-               FD_ZERO(&rdfs);
-               FD_SET(sock, &rdfs);
-               timeout.tv_sec = dwTimeLeft / 1000;
-               timeout.tv_usec = (dwTimeLeft % 1000) * 1000;
-#endif
+      sp.reset();
+      sp.add(sock);
 
       UINT64 qwStartTime = GetCurrentTimeMs();
-
-#if HAVE_POLL
-      if (poll(&fds, 1, dwTimeLeft) > 0)
-#else
-      if (select(SELECT_NFDS(sock + 1), &rdfs, NULL, NULL, &timeout) > 0)
-#endif
-
-#endif   /* USE_KQUEUE else */
+      if (sp.poll(dwTimeLeft) > 0)
                {
                        dwElapsedTime = (UINT32)(GetCurrentTimeMs() - qwStartTime);
                        dwTimeLeft -= min(dwElapsedTime, dwTimeLeft);
@@ -295,9 +252,6 @@ static UINT32 WaitForReply(int sock, UINT32 addr, UINT16 sequence, UINT32 dwTime
                        dwTimeLeft = 0;
                }
        }
-#ifdef USE_KQUEUE
-       close(kq);
-#endif
    return result;
 }
 
index 55a466a..9a99b85 100644 (file)
@@ -169,61 +169,19 @@ static UINT32 WaitForReply(int sock, struct sockaddr_in6 *addr, UINT32 id, UINT3
    char *buffer = (char *)malloc(MAX_PACKET_SIZE);
 #endif
 
-#ifdef USE_KQUEUE
-   int kq;
-   struct kevent ke;
-   struct timespec ts;
+   SocketPoller sp;
    socklen_t iAddrLen;
    struct sockaddr_in6 saSrc;
 
-   kq = kqueue();
-   EV_SET(&ke, sock, EVFILT_READ, EV_ADD, 0, 5, NULL);
-   kevent(kq, &ke, 1, NULL, 0, NULL);
-
    // Wait for response
    for(dwTimeLeft = dwTimeout; dwTimeLeft > 0;)
    {
-      UINT64 qwStartTime = GetCurrentTimeMs();
-
-      ts.tv_sec = dwTimeLeft / 1000;
-      ts.tv_nsec = (dwTimeLeft % 1000) * 1000 * 1000;
-
-      memset(&ke, 0, sizeof(ke));
-      if (kevent(kq, NULL, 0, &ke, 1, &ts) > 0)
-#else    /* not USE_KQUEUE */
-
-#if HAVE_POLL
-   struct pollfd fds;
-#else
-   struct timeval timeout;
-   fd_set rdfs;
-#endif
-   socklen_t iAddrLen;
-   struct sockaddr_in6 saSrc;
-
-   // Wait for response
-   for(dwTimeLeft = dwTimeout; dwTimeLeft > 0;)
-   {
-#if HAVE_POLL
-      fds.fd = sock;
-      fds.events = POLLIN;
-      fds.revents = POLLIN;
-#else
-      FD_ZERO(&rdfs);
-      FD_SET(sock, &rdfs);
-      timeout.tv_sec = dwTimeLeft / 1000;
-      timeout.tv_usec = (dwTimeLeft % 1000) * 1000;
-#endif
+      sp.reset();
+      sp.add(sock);
 
       UINT64 qwStartTime = GetCurrentTimeMs();
 
-#if HAVE_POLL
-      if (poll(&fds, 1, dwTimeLeft) > 0)
-#else
-      if (select(SELECT_NFDS(sock + 1), &rdfs, NULL, NULL, &timeout) > 0)
-#endif
-
-#endif   /* USE_KQUEUE else */
+      if (sp.poll(dwTimeLeft) > 0)
       {
          dwElapsedTime = (UINT32)(GetCurrentTimeMs() - qwStartTime);
          dwTimeLeft -= min(dwElapsedTime, dwTimeLeft);
@@ -260,9 +218,6 @@ static UINT32 WaitForReply(int sock, struct sockaddr_in6 *addr, UINT32 id, UINT3
          dwTimeLeft = 0;
       }
    }
-#ifdef USE_KQUEUE
-   close(kq);
-#endif
 #if !HAVE_ALLOCA
    free(buffer);
 #endif
index 03b4c72..1e9b552 100644 (file)
@@ -30,12 +30,7 @@ SocketPoller::SocketPoller(bool write)
 {
    m_write = write;
    m_count = 0;
-#if HAVE_KQUEUE
-   m_queue = kqueue();
-   memset(m_sockets, 0, sizeof(m_sockets));
-   memset(m_events, 0, sizeof(m_events));
-   m_numEvents = 0;
-#elif HAVE_POLL
+#if HAVE_POLL
    memset(m_sockets, 0, sizeof(m_sockets));
 #else
    FD_ZERO(&m_sockets);
@@ -50,9 +45,6 @@ SocketPoller::SocketPoller(bool write)
  */
 SocketPoller::~SocketPoller()
 {
-#if HAVE_KQUEUE
-   close(m_queue);
-#endif
 }
 
 /**
@@ -63,9 +55,7 @@ bool SocketPoller::add(SOCKET s)
    if ((s == INVALID_SOCKET) || (m_count == SOCKET_POLLER_MAX_SOCKETS))
       return false;
 
-#if HAVE_KQUEUE
-   EV_SET(&m_sockets[m_count], s, m_write ? EVFILT_WRITE : EVFILT_READ, EV_ADD, 0, 0, NULL);
-#elif HAVE_POLL
+#if HAVE_POLL
    m_sockets[m_count].fd = s;
    m_sockets[m_count].events = m_write ? POLLOUT : POLLIN;
 #else
@@ -92,29 +82,7 @@ int SocketPoller::poll(UINT32 timeout)
    if (m_count == 0)
       return -1;
 
-#if HAVE_KQUEUE
-   if (timeout == INFINITE)
-   {
-      m_numEvents = kevent(m_queue, m_sockets, m_count, m_events, m_count, NULL);
-      return m_numEvents;
-   }
-   else
-   {
-      struct timespec tv;
-      do
-      {
-         tv.tv_sec = timeout / 1000;
-         tv.tv_nsec = (timeout % 1000) * 1000000;
-         INT64 startTime = GetCurrentTimeMs();
-         m_numEvents = kevent(m_queue, m_sockets, m_count, m_sockets, m_count, &tv);
-         if ((m_numEvents != -1) || (errno != EINTR))
-            break;
-         UINT32 elapsed = (UINT32)(GetCurrentTimeMs() - startTime);
-         timeout -= min(timeout, elapsed);
-      } while(timeout > 0);
-      return m_numEvents;
-   }
-#elif HAVE_POLL
+#if HAVE_POLL
    if (timeout == INFINITE)
    {
       return ::poll(m_sockets, m_count, -1);
@@ -173,14 +141,7 @@ int SocketPoller::poll(UINT32 timeout)
  */
 bool SocketPoller::isSet(SOCKET s)
 {
-#if HAVE_KQUEUE
-   for(int i = 0; i < m_numEvents; i++)
-   {
-      if (s == m_events[i].ident)
-         return true;
-   }
-   return false;
-#elif HAVE_POLL
+#if HAVE_POLL
    for(int i = 0; i < SOCKET_POLLER_MAX_SOCKETS; i++)
    {
       if (s == m_sockets[i].fd)
@@ -198,11 +159,7 @@ bool SocketPoller::isSet(SOCKET s)
 void SocketPoller::reset()
 {
    m_count = 0;
-#if HAVE_KQUEUE
-   memset(m_sockets, 0, sizeof(m_sockets));
-   memset(m_events, 0, sizeof(m_events));
-   m_numEvents = 0;
-#elif HAVE_POLL
+#if HAVE_POLL
    memset(m_sockets, 0, sizeof(m_sockets));
 #else
    FD_ZERO(&m_sockets);