- MAX_DESCRIPTORS = 0;
- this->RecoverFromFork();
- ke_list = new struct kevent[GetMaxFds()];
- ref = new EventHandler* [GetMaxFds()];
- memset(ref, 0, GetMaxFds() * sizeof(EventHandler*));
+ int EngineHandle;
+ unsigned int ChangePos = 0;
+ /** These are used by kqueue() to hold socket events
+ */
+ std::vector<struct kevent> ke_list(16);
+
+ /** Pending changes
+ */
+ std::vector<struct kevent> changelist(8);
+
+#if defined __NetBSD__ && __NetBSD_Version__ <= 999001400
+ inline intptr_t udata_cast(EventHandler* eh)
+ {
+ // On NetBSD <10 the last parameter of EV_SET is intptr_t.
+ return reinterpret_cast<intptr_t>(eh);
+ }
+#else
+ inline void* udata_cast(EventHandler* eh)
+ {
+ // On other platforms the last parameter of EV_SET is void*.
+ return static_cast<void*>(eh);
+ }
+#endif
+}
+
+/** Initialize the kqueue engine
+ */
+void SocketEngine::Init()
+{
+ LookupMaxFds();
+ RecoverFromFork();