Otclient
14/8/2020
eventdispatcher.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2010-2020 OTClient <https://github.com/edubart/otclient>
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a copy
5
* of this software and associated documentation files (the "Software"), to deal
6
* in the Software without restriction, including without limitation the rights
7
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
* copies of the Software, and to permit persons to whom the Software is
9
* furnished to do so, subject to the following conditions:
10
*
11
* The above copyright notice and this permission notice shall be included in
12
* all copies or substantial portions of the Software.
13
*
14
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
* THE SOFTWARE.
21
*/
22
23
#ifndef EVENTDISPATCHER_H
24
#define EVENTDISPATCHER_H
25
26
#include "
clock.h
"
27
#include "
scheduledevent.h
"
28
29
#include <queue>
30
31
// @bindsingleton g_dispatcher
32
class
EventDispatcher
33
{
34
public
:
35
void
shutdown
();
36
void
poll
();
37
38
EventPtr
addEvent
(
const
std::function<
void
()>& callback,
bool
pushFront =
false
);
39
ScheduledEventPtr
scheduleEvent
(
const
std::function<
void
()>& callback,
int
delay);
40
ScheduledEventPtr
cycleEvent
(
const
std::function<
void
()>& callback,
int
delay);
41
42
private
:
43
std::list<EventPtr> m_eventList;
44
int
m_pollEventsSize;
45
stdext::boolean<false>
m_disabled;
46
std::priority_queue<ScheduledEventPtr, std::vector<ScheduledEventPtr>,
lessScheduledEvent
> m_scheduledEventList;
47
};
48
49
extern
EventDispatcher
g_dispatcher
;
50
51
#endif
stdext::boolean< false >
clock.h
EventDispatcher::cycleEvent
ScheduledEventPtr cycleEvent(const std::function< void()> &callback, int delay)
Definition:
eventdispatcher.cpp:93
EventDispatcher::addEvent
EventPtr addEvent(const std::function< void()> &callback, bool pushFront=false)
Definition:
eventdispatcher.cpp:104
EventDispatcher
Definition:
eventdispatcher.h:32
EventDispatcher::poll
void poll()
Definition:
eventdispatcher.cpp:43
lessScheduledEvent
Definition:
scheduledevent.h:50
EventDispatcher::shutdown
void shutdown()
Definition:
eventdispatcher.cpp:30
stdext::shared_object_ptr< Event >
g_dispatcher
EventDispatcher g_dispatcher
Definition:
eventdispatcher.cpp:28
scheduledevent.h
EventDispatcher::scheduleEvent
ScheduledEventPtr scheduleEvent(const std::function< void()> &callback, int delay)
Definition:
eventdispatcher.cpp:82
src
framework
core
eventdispatcher.h
Generated by
1.8.17
For more information visit
https://forum.opentibia.dev/