paho-mqtt-cpp
MQTT C++ Client for POSIX and Windows
Loading...
Searching...
No Matches
disconnect_options.h
Go to the documentation of this file.
1
6
7/****************************************************************************
8 * Copyright (c) 2016-2017 Frank Pagliughi <fpagliughi@mindspring.com>
9 *
10 * All rights reserved. This program and the accompanying materials
11 * are made available under the terms of the Eclipse Public License v2.0
12 * and Eclipse Distribution License v1.0 which accompany this distribution.
13 *
14 * The Eclipse Public License is available at
15 * http://www.eclipse.org/legal/epl-v20.html
16 * and the Eclipse Distribution License is available at
17 * http://www.eclipse.org/org/documents/edl-v10.php.
18 *
19 * Contributors:
20 * Frank Pagliughi - initial implementation and documentation
21 ***************************************************************************/
22
23#ifndef __mqtt_disconnect_options_h
24#define __mqtt_disconnect_options_h
25
26#include "MQTTAsync.h"
27#include "mqtt/types.h"
28#include "mqtt/token.h"
29#include "mqtt/properties.h"
30#include <chrono>
31
32namespace mqtt {
33
35
40{
42 static const MQTTAsync_disconnectOptions DFLT_C_STRUCT;
43
45 static const MQTTAsync_disconnectOptions DFLT_C_STRUCT5;
46
48 MQTTAsync_disconnectOptions opts_;
49
51 token_ptr tok_;
52
54 properties props_;
55
57 friend class async_client;
58
61
65 void update_c_struct();
66
68 disconnect_options(const MQTTAsync_disconnectOptions& copts) : opts_{copts} {}
69
70public:
80 set_timeout(timeout);
81 }
86 template <class Rep, class Period>
87 disconnect_options(const std::chrono::duration<Rep, Period>& to)
89 set_timeout(to);
90 }
124 #if defined(UNIT_TESTS)
125 const MQTTAsync_disconnectOptions& c_struct() const { return opts_; }
126 #endif
131 std::chrono::milliseconds get_timeout() const {
132 return std::chrono::milliseconds(opts_.timeout);
133 }
139 void set_timeout(int timeout) { opts_.timeout = timeout; }
145 template <class Rep, class Period>
146 void set_timeout(const std::chrono::duration<Rep, Period>& to) {
147 // TODO: check range
149 }
156 void set_token(const token_ptr& tok, int mqttVersion);
161 token_ptr get_token() const { return tok_; }
166 const properties& get_properties() const { return props_; }
171 properties& get_properties() { return props_; }
176 void set_properties(const properties& props) {
177 props_ = props;
178 opts_.properties = props_.c_struct();
179 }
185 props_ = std::move(props);
186 opts_.properties = props_.c_struct();
187 }
193 return ReasonCode(opts_.reasonCode);
194 }
200 opts_.reasonCode = MQTTReasonCodes(code);
201 }
202};
203
205
210{
212 disconnect_options opts_;
213
215 disconnect_options_builder(const MQTTAsync_disconnectOptions& copts) : opts_{copts} {}
216
217public:
238 auto properties(mqtt::properties&& props) -> self& {
239 opts_.set_properties(std::move(props));
240 return *this;
241 }
246 auto properties(const mqtt::properties& props) -> self& {
247 opts_.set_properties(props);
248 return *this;
249 }
255 template <class Rep, class Period>
256 auto timeout(const std::chrono::duration<Rep, Period>& to) -> self&{
257 opts_.set_timeout(to);
258 return *this;
259 }
264 auto reason_code(ReasonCode code) -> self& {
265 opts_.set_reason_code(code);
266 return *this;
267 }
272 disconnect_options finalize() { return opts_; }
273};
274
275
277// end namespace 'mqtt'
278}
279
280#endif // __mqtt_disconnect_options_h
281
Definition: async_client.h:108
Definition: disconnect_options.h:210
static disconnect_options_builder v3()
auto properties(const mqtt::properties &props) -> self &
Definition: disconnect_options.h:246
disconnect_options_builder()
Definition: disconnect_options.h:223
static disconnect_options_builder v5()
disconnect_options finalize()
Definition: disconnect_options.h:272
auto timeout(const std::chrono::duration< Rep, Period > &to) -> self &
Definition: disconnect_options.h:256
auto reason_code(ReasonCode code) -> self &
Definition: disconnect_options.h:264
auto properties(mqtt::properties &&props) -> self &
Definition: disconnect_options.h:238
Definition: disconnect_options.h:40
static disconnect_options v5()
void set_timeout(int timeout)
Definition: disconnect_options.h:139
const properties & get_properties() const
Definition: disconnect_options.h:166
ReasonCode get_reason_code() const
Definition: disconnect_options.h:192
void set_timeout(const std::chrono::duration< Rep, Period > &to)
Definition: disconnect_options.h:146
properties & get_properties()
Definition: disconnect_options.h:171
disconnect_options & operator=(const disconnect_options &opt)
void set_token(const token_ptr &tok, int mqttVersion)
void set_properties(const properties &props)
Definition: disconnect_options.h:176
void set_reason_code(ReasonCode code)
Definition: disconnect_options.h:199
disconnect_options & operator=(disconnect_options &&opt)
disconnect_options(const disconnect_options &opt)
disconnect_options(const std::chrono::duration< Rep, Period > &to)
Definition: disconnect_options.h:87
token_ptr get_token() const
Definition: disconnect_options.h:161
std::chrono::milliseconds get_timeout() const
Definition: disconnect_options.h:131
static disconnect_options v3()
disconnect_options(disconnect_options &&opt)
disconnect_options(int timeout)
Definition: disconnect_options.h:79
void set_properties(properties &&props)
Definition: disconnect_options.h:184
Definition: properties.h:256
const MQTTProperties & c_struct() const
Definition: properties.h:308
Definition: async_client.h:49
ReasonCode
Definition: types.h:57
token::ptr_t token_ptr
Definition: token.h:506
long to_milliseconds_count(const std::chrono::duration< Rep, Period > &dur)
Definition: types.h:149