SRSDK  0.10.39
Loading...
Searching...
No Matches
eventCenter.hpp
Go to the documentation of this file.
1#ifndef CNSDK_LEIA_CORE_CXX_EVENT_CENTER_HPP
2#define CNSDK_LEIA_CORE_CXX_EVENT_CENTER_HPP
3
5
6namespace leia {
7
9
11public:
12 EventListener() : _listener(nullptr)
13 {
14 }
15 EventListener(CoreLibrary const& coreLib, EventListenerCallback callback, void* userData) : _listener(leia_event_listener_alloc(coreLib.GetHandle()))
16 {
17 leia_event_listener_set_callback(_listener, callback, userData);
18 }
20 {
21 if (_listener)
22 {
23 Unregister();
24 leia_event_listener_free(_listener);
25 }
26 }
27 EventListener(EventListener const&) = delete;
30 {
31 *this = std::move(other);
32 }
34 {
35 std::swap(_listener, other._listener);
36 return *this;
37 }
38 explicit operator bool() const
39 {
40 return _listener != nullptr;
41 }
42
43 void Register()
44 {
45 leia_event_center_add_listener(_listener);
46 }
48 {
49 leia_event_center_remove_listener(_listener);
50 }
51
52private:
53 leia_event_listener* _listener;
54};
55
56class Event {
57public:
58 explicit Event(leia_event const* ptr) : _ptr(ptr)
59 {
60 }
61
63 {
64 return leia_event_get_type(_ptr);
65 }
66
67 class Component {
68 public:
69 Component(leia_event_component const* ptr) : _ptr(ptr)
70 {
71 }
72
74 {
75 return leia_component_event_get_id(_ptr);
76 }
77 int32_t GetCode() const
78 {
79 return leia_component_event_get_code(_ptr);
80 }
81 void const* GetPayload() const
82 {
83 return leia_component_event_get_payload(_ptr);
84 }
85
86 explicit operator bool() const
87 {
88 return _ptr != nullptr;
89 }
90
91 private:
92 leia_event_component const* _ptr;
93 };
95 {
96 return {leia_event_get_component(_ptr)};
97 }
98
100 Error const* GetError() const
101 {
102 return leia_event_get_error(_ptr);
103 }
104
106 Log const* GetLog() const
107 {
108 return leia_event_get_log(_ptr);
109 }
110
111private:
112 leia_event const* _ptr;
113};
114
115} // namespace leia
116
117#endif // CNSDK_LEIA_CORE_CXX_EVENT_CENTER_HPP
Definition library.hpp:9
Definition eventCenter.hpp:67
int32_t GetCode() const
Definition eventCenter.hpp:77
Component(leia_event_component const *ptr)
Definition eventCenter.hpp:69
leia_component_id GetId() const
Definition eventCenter.hpp:73
void const * GetPayload() const
Definition eventCenter.hpp:81
Definition eventCenter.hpp:56
Event(leia_event const *ptr)
Definition eventCenter.hpp:58
leia_event_type GetType() const
Definition eventCenter.hpp:62
Log const * GetLog() const
Definition eventCenter.hpp:106
Error const * GetError() const
Definition eventCenter.hpp:100
Component GetComponent() const
Definition eventCenter.hpp:94
Definition eventCenter.hpp:10
void Register()
Definition eventCenter.hpp:43
EventListener()
Definition eventCenter.hpp:12
void Unregister()
Definition eventCenter.hpp:47
EventListener & operator=(EventListener &&other)
Definition eventCenter.hpp:33
EventListener(EventListener &&other)
Definition eventCenter.hpp:29
EventListener(EventListener const &)=delete
EventListener(CoreLibrary const &coreLib, EventListenerCallback callback, void *userData)
Definition eventCenter.hpp:15
~EventListener()
Definition eventCenter.hpp:19
EventListener & operator=(EventListener const &)=delete
void(* leia_event_listener_callback)(void *userData, struct leia_event const *)
Definition eventCenter.types.h:50
leia_component_id
Definition eventCenter.types.h:25
leia_event_type
Definition eventCenter.types.h:13
LEIA_NODISCARD LEIASDK_API struct leia_event_listener * leia_event_listener_alloc(struct leia_core_library *)
LEIASDK_API void leia_event_listener_free(struct leia_event_listener *)
LEIASDK_API void leia_event_listener_set_callback(struct leia_event_listener *, leia_event_listener_callback callback, void *userData)
callback must be thread-safe.
Definition types.hpp:10
leia_event_listener_callback EventListenerCallback
Definition eventCenter.hpp:8
Component-specific event.
Definition eventCenter.h:46
Definition eventCenter.types.h:33
Definition eventCenter.types.h:20
Event.
Definition eventCenter.h:41