-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathEVLoop.cpp
More file actions
71 lines (57 loc) · 1 KB
/
EVLoop.cpp
File metadata and controls
71 lines (57 loc) · 1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "EVComm.h"
#include "EVWork.h"
using namespace evwork;
CEVLoop::CEVLoop()
: m_pEVLoop(NULL)
{
}
CEVLoop::~CEVLoop()
{
destroy();
}
bool CEVLoop::init()
{
if (m_pEVLoop == NULL)
{
//m_pEVLoop = ev_default_loop(0);
m_pEVLoop = ev_loop_new(EVBACKEND_EPOLL);
}
return (m_pEVLoop != NULL);
}
void CEVLoop::destroy()
{
if (m_pEVLoop)
{
ev_loop_destroy(m_pEVLoop);
m_pEVLoop = NULL;
}
}
void CEVLoop::runLoop()
{
if (m_pEVLoop)
ev_run(m_pEVLoop, 0);
}
void CEVLoop::breakLoop()
{
if (m_pEVLoop)
ev_break(m_pEVLoop, EVBREAK_ALL);
}
void CEVLoop::setHandle(IHandle* p)
{
if (m_setHandle.find(p) != m_setHandle.end())
return;
ev_io_init(&p->getEvIo(), IHandle::evCallBack, p->getFd(), p->getEv());
ev_io_start(m_pEVLoop, &p->getEvIo());
m_setHandle.insert(p);
}
void CEVLoop::delHandle(IHandle* p)
{
if (m_setHandle.find(p) == m_setHandle.end())
return;
ev_io_stop(m_pEVLoop, &p->getEvIo());
m_setHandle.erase(p);
}
struct ev_loop* CEVLoop::getEvLoop()
{
return m_pEVLoop;
}