]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socketengine_kqueue.cpp
Make parameter count checks more readable
[user/henk/code/inspircd.git] / src / socketengine_kqueue.cpp
index f10e6350ecc3c9f6722d5c004307ef20ef6d09c4..ef5c507a1bf3543d4d8fb673af82f89550e75978 100644 (file)
  * ---------------------------------------------------
  */
 
-#include "inspircd_config.h"
-#include "globals.h"
 #include "inspircd.h"
 #include <sys/types.h>
 #include <sys/event.h>
 #include <sys/time.h>
-#include <vector>
-#include <string>
 #include "socketengine_kqueue.h"
 
 
@@ -48,6 +44,9 @@ KQueueEngine::~KQueueEngine()
 bool KQueueEngine::AddFd(EventHandler* eh)
 {
        int fd = eh->GetFd();
+
+       ServerInstance->Log(DEFAULT,"KQueueEngine::AddFd(%d)",fd);
+
        if ((fd < 0) || (fd > MAX_DESCRIPTORS))
        {
                ServerInstance->Log(DEFAULT,"ERROR: FD of %d added above max of %d",fd,MAX_DESCRIPTORS);
@@ -60,7 +59,10 @@ bool KQueueEngine::AddFd(EventHandler* eh)
        }
 
        if (ref[fd])
+       {
+               ServerInstance->Log(DEFAULT,"ERROR: Slot already occupied");
                return false;
+       }
 
        ref[fd] = eh;
        ServerInstance->Log(DEBUG,"Add socket %d",fd);
@@ -68,6 +70,7 @@ bool KQueueEngine::AddFd(EventHandler* eh)
        struct kevent ke;
        ServerInstance->Log(DEBUG,"kqueue: Add socket to events, kq=%d socket=%d",EngineHandle,fd);
        EV_SET(&ke, fd, eh->Readable() ? EVFILT_READ : EVFILT_WRITE, EV_ADD, 0, 0, NULL);
+
        int i = kevent(EngineHandle, &ke, 1, 0, 0, NULL);
        if (i == -1)
        {
@@ -90,15 +93,17 @@ bool KQueueEngine::DelFd(EventHandler* eh)
 
        struct kevent ke;
        EV_SET(&ke, fd, eh->Readable() ? EVFILT_READ : EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
+
        int i = kevent(EngineHandle, &ke, 1, 0, 0, NULL);
        if (i == -1)
        {
-               ServerInstance->Log(DEBUG,"kqueue: Failed to remove socket from queue!");
+               ServerInstance->Log(DEBUG,"kqueue: Failed to remove socket from queue: %s",strerror(errno));
                return false;
        }
 
        CurrentSetSize--;
        ref[fd] = NULL;
+
        return true;
 }