]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socketengines/socketengine_kqueue.cpp
Dispatch EventHandler events to dedicated virtual functions
[user/henk/code/inspircd.git] / src / socketengines / socketengine_kqueue.cpp
index 68c1bda8c2dbad62ddab3001649663895e43f902..922cb7f2d99d6df40afdf9ec3b76e0a19019764f 100644 (file)
@@ -24,7 +24,6 @@
 #include <sys/types.h>
 #include <sys/event.h>
 #include <sys/time.h>
-#include "socketengine.h"
 #include <iostream>
 #include <sys/sysctl.h>
 
@@ -58,13 +57,8 @@ void SocketEngine::Init()
        mib[1] = KERN_MAXFILES;
 #endif
        len = sizeof(MAX_DESCRIPTORS);
+       // MAX_DESCRIPTORS is mainly used for display purposes, no problem if the sysctl() below fails
        sysctl(mib, 2, &MAX_DESCRIPTORS, &len, NULL, 0);
-       if (MAX_DESCRIPTORS <= 0)
-       {
-               ServerInstance->Logs->Log("SOCKET", LOG_DEFAULT, "ERROR: Can't determine maximum number of open sockets!");
-               std::cout << "ERROR: Can't determine maximum number of open sockets!" << std::endl;
-               ServerInstance->QuickExit(EXIT_STATUS_SOCKETENGINE);
-       }
 
        RecoverFromFork();
 }
@@ -200,7 +194,7 @@ int SocketEngine::DispatchEvents()
                if (kev.flags & EV_EOF)
                {
                        stats.ErrorEvents++;
-                       eh->HandleEvent(EVENT_ERROR, kev.fflags);
+                       eh->OnEventHandlerError(kev.fflags);
                        continue;
                }
                if (filter == EVFILT_WRITE)
@@ -212,13 +206,13 @@ int SocketEngine::DispatchEvents()
                         */
                        const int bits_to_clr = FD_WANT_SINGLE_WRITE | FD_WANT_FAST_WRITE | FD_WRITE_WILL_BLOCK;
                        eh->SetEventMask(eh->GetEventMask() & ~bits_to_clr);
-                       eh->HandleEvent(EVENT_WRITE);
+                       eh->OnEventHandlerWrite();
                }
                else if (filter == EVFILT_READ)
                {
                        stats.ReadEvents++;
                        eh->SetEventMask(eh->GetEventMask() & ~FD_READ_WILL_BLOCK);
-                       eh->HandleEvent(EVENT_READ);
+                       eh->OnEventHandlerRead();
                }
        }