PahoMqttCpp
MQTT C++ Client for POSIX and Windows
Loading...
Searching...
No Matches
event.h
Go to the documentation of this file.
1
7
8/*******************************************************************************
9 * Copyright (c) 2024 Frank Pagliughi <fpagliughi@mindspring.com>
10 *
11 * All rights reserved. This program and the accompanying materials
12 * are made available under the terms of the Eclipse Public License v2.0
13 * and Eclipse Distribution License v1.0 which accompany this distribution.
14 *
15 * The Eclipse Public License is available at
16 * http://www.eclipse.org/legal/epl-v20.html
17 * and the Eclipse Distribution License is available at
18 * http://www.eclipse.org/org/documents/edl-v10.php.
19 *
20 * Contributors:
21 * Frank Pagliughi - initial implementation and documentation
22 *******************************************************************************/
23
24#ifndef __mqtt_event_h
25#define __mqtt_event_h
26
27#include "mqtt/message.h"
28#include "mqtt/properties.h"
29#include "mqtt/reason_code.h"
30#include "mqtt/types.h"
31#include <variant>
32
33namespace mqtt {
34
36
39{
40 string cause;
41};
42
45{
46 string cause;
47};
48
55
57struct shutdown_event { };
58
59
60/* Event for when a message arrives is just a message pointer */
61
63
84class event
85{
86public:
88 using event_type = std::variant<
90
91private:
92 event_type evt_{};
93
94public:
99 event() {}
104 event(event_type evt) : evt_{std::move(evt)} {}
109 event(message_ptr msg) : evt_{std::move(msg)} {}
114 event(const_message_ptr msg) : evt_{std::move(msg)} {}
119 event(connected_event evt) : evt_{std::move(evt)} {}
124 event(connection_lost_event evt) : evt_{std::move(evt)} {}
129 event(disconnected_event evt) : evt_{std::move(evt)} {}
134 event(shutdown_event evt) : evt_{std::move(evt)} {}
139 event(const event& evt) : evt_{evt.evt_} {}
144 event(event&& evt) : evt_{std::move(evt.evt_)} {}
150 event& operator=(event_type evt) {
151 evt_ = std::move(evt);
152 return *this;
153 }
159 event& operator=(const event& rhs) {
160 if (&rhs != this)
161 evt_ = rhs.evt_;
162 return *this;
163 }
169 event& operator=(event&& rhs) {
170 if (&rhs != this)
171 evt_ = std::move(rhs.evt_);
172 return *this;
173 }
179 bool is_message() const {
180 return std::holds_alternative<const_message_ptr>(evt_);
181 }
187 bool is_connected() const {
188 return std::holds_alternative<connected_event>(evt_);
189 }
195 bool is_connection_lost() const {
196 return std::holds_alternative<connection_lost_event>(evt_);
197 }
203 bool is_disconnected() const {
204 return std::holds_alternative<disconnected_event>(evt_);
205 }
211 bool is_shutdown() const {
212 return std::holds_alternative<disconnected_event>(evt_);
213 }
219 bool is_any_disconnect() const {
220 return std::holds_alternative<connection_lost_event>(evt_)
221 || std::holds_alternative<disconnected_event>(evt_)
222 || std::holds_alternative<shutdown_event>(evt_);
223 }
230 return std::get<const_message_ptr>(evt_);
231 }
242 return std::get<disconnected_event>(evt_);
243 }
250 constexpr std::add_pointer_t<const_message_ptr>
251 get_message_if() noexcept {
252 return std::get_if<const_message_ptr>(&evt_);
253 }
263 constexpr std::add_pointer_t<disconnected_event>
265 return std::get_if<disconnected_event>(&evt_);
266 }
267};
268
270} // namespace mqtt
271
272#endif // __mqtt_event_h
Definition event.h:85
bool is_message() const
Definition event.h:179
event(event &&evt)
Definition event.h:144
event(message_ptr msg)
Definition event.h:109
const_message_ptr get_message()
Definition event.h:229
event & operator=(event_type evt)
Definition event.h:150
event(const event &evt)
Definition event.h:139
std::variant< const_message_ptr, connected_event, connection_lost_event, disconnected_event, shutdown_event > event_type
Definition event.h:89
event(shutdown_event evt)
Definition event.h:134
bool is_shutdown() const
Definition event.h:211
constexpr std::add_pointer_t< const_message_ptr > get_message_if() noexcept
Definition event.h:251
event(disconnected_event evt)
Definition event.h:129
event(event_type evt)
Definition event.h:104
event(const_message_ptr msg)
Definition event.h:114
event & operator=(const event &rhs)
Definition event.h:159
bool is_disconnected() const
Definition event.h:203
bool is_any_disconnect() const
Definition event.h:219
event(connection_lost_event evt)
Definition event.h:124
event & operator=(event &&rhs)
Definition event.h:169
constexpr std::add_pointer_t< disconnected_event > get_disconnected_if() noexcept
Definition event.h:264
bool is_connected() const
Definition event.h:187
bool is_connection_lost() const
Definition event.h:195
event(connected_event evt)
Definition event.h:119
event()
Definition event.h:99
disconnected_event get_disconnected()
Definition event.h:241
Definition properties.h:293
Definition async_client.h:60
message::ptr_t message_ptr
Definition message.h:375
ReasonCode
Definition reason_code.h:39
message::const_ptr_t const_message_ptr
Definition message.h:378
Definition event.h:39
string cause
Definition event.h:40
Definition event.h:45
string cause
Definition event.h:46
Definition event.h:51
properties props
Definition event.h:52
ReasonCode reasonCode
Definition event.h:53
Definition event.h:57