/* EQEmu: EQEmulator Copyright (C) 2001-2026 EQEmu Development Team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma once #include "common/platform/win/include_windows.h" // uv.h is going to include it so let's do it first. #include "uv.h" // FIXME: hide this #include namespace EQ { class EventLoop { public: static EventLoop &Get() { static thread_local EventLoop inst; return inst; } ~EventLoop() { uv_loop_close(&m_loop); } void Process() { uv_run(&m_loop, UV_RUN_NOWAIT); } void Run() { uv_run(&m_loop, UV_RUN_DEFAULT); } void Shutdown() { uv_stop(&m_loop); } uv_loop_t* Handle() { return &m_loop; } private: EventLoop() { memset(&m_loop, 0, sizeof(uv_loop_t)); uv_loop_init(&m_loop); } EventLoop(const EventLoop&); EventLoop& operator=(const EventLoop&); uv_loop_t m_loop; }; }