mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-29 01:31:30 +00:00
48 lines
761 B
C++
48 lines
761 B
C++
#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 <cstring>
|
|
|
|
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;
|
|
};
|
|
}
|