PahoMqttCpp
MQTT C++ Client for POSIX and Windows
Toggle main menu visibility
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 <variant>
28
29
#include "
mqtt/message.h
"
30
#include "
mqtt/properties.h
"
31
#include "
mqtt/reason_code.h
"
32
#include "
mqtt/types.h
"
33
34
namespace
mqtt
{
35
37
39
struct
connected_event
40
{
41
string
cause
;
42
};
43
45
struct
connection_lost_event
46
{
47
string
cause
;
48
};
49
51
struct
disconnected_event
52
{
53
properties
props
;
54
ReasonCode
reasonCode
;
55
};
56
58
struct
shutdown_event
59
{
60
};
61
62
/* Event for when a message arrives is just a message pointer */
63
65
86
class
event
87
{
88
public
:
90
using
event_type
= std::variant<
91
const_message_ptr
,
connected_event
,
connection_lost_event
,
disconnected_event
,
92
shutdown_event
>;
93
94
private
:
95
event_type
evt_{};
96
97
public
:
102
event
() {}
107
event
(
event_type
evt) : evt_{std::move(evt)} {}
112
event
(
message_ptr
msg) : evt_{std::move(msg)} {}
117
event
(
const_message_ptr
msg) : evt_{std::move(msg)} {}
122
event
(
connected_event
evt) : evt_{std::move(evt)} {}
127
event
(
connection_lost_event
evt) : evt_{std::move(evt)} {}
132
event
(
disconnected_event
evt) : evt_{std::move(evt)} {}
137
event
(
shutdown_event
evt) : evt_{std::move(evt)} {}
142
event
(
const
event
& evt) : evt_{evt.evt_} {}
147
event
(
event
&& evt) : evt_{std::move(evt.evt_)} {}
153
event
&
operator=
(
event_type
evt) {
154
evt_ = std::move(evt);
155
return
*
this
;
156
}
157
162
event
&
operator=
(
const
event
& rhs) {
163
if
(&rhs !=
this
)
164
evt_ = rhs.evt_;
165
return
*
this
;
166
}
167
172
event
&
operator=
(
event
&& rhs) {
173
if
(&rhs !=
this
)
174
evt_ = std::move(rhs.evt_);
175
return
*
this
;
176
}
177
182
bool
is_message
()
const
{
return
std::holds_alternative<const_message_ptr>(evt_); }
188
bool
is_connected
()
const
{
return
std::holds_alternative<connected_event>(evt_); }
194
bool
is_connection_lost
()
const
{
195
return
std::holds_alternative<connection_lost_event>(evt_);
196
}
197
202
bool
is_disconnected
()
const
{
return
std::holds_alternative<disconnected_event>(evt_); }
208
bool
is_shutdown
()
const
{
return
std::holds_alternative<disconnected_event>(evt_); }
214
bool
is_any_disconnect
()
const
{
215
return
std::holds_alternative<connection_lost_event>(evt_) ||
216
std::holds_alternative<disconnected_event>(evt_) ||
217
std::holds_alternative<shutdown_event>(evt_);
218
}
219
224
const_message_ptr
get_message
() {
return
std::get<const_message_ptr>(evt_); }
234
disconnected_event
get_disconnected
() {
return
std::get<disconnected_event>(evt_); }
241
constexpr
std::add_pointer_t<const_message_ptr>
get_message_if
() noexcept {
242
return
std::get_if<const_message_ptr>(&evt_);
243
}
244
253
constexpr
std::add_pointer_t<disconnected_event>
get_disconnected_if
() noexcept {
254
return
std::get_if<disconnected_event>(&evt_);
255
}
256
};
257
259
}
// namespace mqtt
260
261
#endif
// __mqtt_event_h
mqtt::event::is_message
bool is_message() const
Definition
event.h:182
mqtt::event::event
event(event &&evt)
Definition
event.h:147
mqtt::event::event
event(message_ptr msg)
Definition
event.h:112
mqtt::event::get_message
const_message_ptr get_message()
Definition
event.h:224
mqtt::event::operator=
event & operator=(event_type evt)
Definition
event.h:153
mqtt::event::event
event(const event &evt)
Definition
event.h:142
mqtt::event::event
event(shutdown_event evt)
Definition
event.h:137
mqtt::event::is_shutdown
bool is_shutdown() const
Definition
event.h:208
mqtt::event::event_type
std::variant< const_message_ptr, connected_event, connection_lost_event, disconnected_event, shutdown_event > event_type
Definition
event.h:90
mqtt::event::get_message_if
constexpr std::add_pointer_t< const_message_ptr > get_message_if() noexcept
Definition
event.h:241
mqtt::event::event
event(disconnected_event evt)
Definition
event.h:132
mqtt::event::event
event(event_type evt)
Definition
event.h:107
mqtt::event::event
event(const_message_ptr msg)
Definition
event.h:117
mqtt::event::operator=
event & operator=(const event &rhs)
Definition
event.h:162
mqtt::event::is_disconnected
bool is_disconnected() const
Definition
event.h:202
mqtt::event::is_any_disconnect
bool is_any_disconnect() const
Definition
event.h:214
mqtt::event::event
event(connection_lost_event evt)
Definition
event.h:127
mqtt::event::operator=
event & operator=(event &&rhs)
Definition
event.h:172
mqtt::event::get_disconnected_if
constexpr std::add_pointer_t< disconnected_event > get_disconnected_if() noexcept
Definition
event.h:253
mqtt::event::is_connected
bool is_connected() const
Definition
event.h:188
mqtt::event::is_connection_lost
bool is_connection_lost() const
Definition
event.h:194
mqtt::event::event
event(connected_event evt)
Definition
event.h:122
mqtt::event::event
event()
Definition
event.h:102
mqtt::event::get_disconnected
disconnected_event get_disconnected()
Definition
event.h:234
mqtt::properties
Definition
properties.h:293
message.h
mqtt
Definition
async_client.h:60
mqtt::ReasonCode
ReasonCode
Definition
reason_code.h:39
mqtt::const_message_ptr
message::const_ptr_t const_message_ptr
Definition
message.h:372
mqtt::message_ptr
message::ptr_t message_ptr
Definition
message.h:369
properties.h
reason_code.h
mqtt::connected_event
Definition
event.h:40
mqtt::connected_event::cause
string cause
Definition
event.h:41
mqtt::connection_lost_event
Definition
event.h:46
mqtt::connection_lost_event::cause
string cause
Definition
event.h:47
mqtt::disconnected_event
Definition
event.h:52
mqtt::disconnected_event::props
properties props
Definition
event.h:53
mqtt::disconnected_event::reasonCode
ReasonCode reasonCode
Definition
event.h:54
mqtt::shutdown_event
Definition
event.h:59
types.h
Generated on
for PahoMqttCpp by
1.17.0