Line data Source code
1 : /**
2 : Copyright (c) 2023 Stappler LLC <admin@stappler.dev>
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 : #include "XLEventListener.h"
24 : #include "XLEventHandler.h"
25 :
26 : namespace STAPPLER_VERSIONIZED stappler::xenolith {
27 :
28 6118 : EventListener::~EventListener() { }
29 :
30 3059 : bool EventListener::init() {
31 3059 : if (!Component::init()) {
32 0 : return false;
33 : }
34 :
35 3059 : return true;
36 : }
37 :
38 126 : void EventListener::onEventRecieved(const Event &ev, const EventCallback &cb) {
39 126 : if (_enabled && _owner && cb) {
40 126 : cb(ev);
41 : }
42 126 : }
43 :
44 21 : EventHandlerNode * EventListener::onEvent(const EventHeader &h, EventCallback &&callback, bool destroyAfterEvent) {
45 42 : return EventHandlerNode::onEvent(h, nullptr,
46 42 : std::bind(&EventListener::onEventRecieved, this, std::placeholders::_1, std::move(callback)),
47 42 : this, destroyAfterEvent);
48 : }
49 :
50 3143 : EventHandlerNode * EventListener::onEventWithObject(const EventHeader &h, Ref *obj, EventCallback &&callback, bool destroyAfterEvent) {
51 6286 : return EventHandlerNode::onEvent(h, obj,
52 6286 : std::bind(&EventListener::onEventRecieved, this, std::placeholders::_1, std::move(callback)),
53 6286 : this, destroyAfterEvent);
54 : }
55 :
56 21 : void EventListener::clear() {
57 21 : EventHandler::clearEvents();
58 21 : }
59 :
60 : }
|