PahoMqttCpp
MQTT C++ Client for POSIX and Windows
Loading...
Searching...
No Matches
create_options.h
Go to the documentation of this file.
1
7
8/*******************************************************************************
9 * Copyright (c) 2020-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_create_options_h
25#define __mqtt_create_options_h
26
27#include <variant>
28
29#include "MQTTAsync.h"
31#include "mqtt/types.h"
32
33namespace mqtt {
34
36
39{
40};
41
44
52using persistence_type = std::variant<no_persistence, string, iclient_persistence*>;
53
55
60{
62 MQTTAsync_createOptions opts_ MQTTAsync_createOptions_initializer5;
63
65 string serverURI_{};
66
68 string clientId_{};
69
71 persistence_type persistence_{};
72
74 friend class async_client;
76
77public:
79 using ptr_t = std::shared_ptr<create_options>;
81 using const_ptr_t = std::shared_ptr<const create_options>;
82
91 explicit create_options(int mqttVersion) : create_options() {
92 opts_.MQTTVersion = mqttVersion;
93 }
94
100 create_options(int mqttVersion, int maxBufferedMessages);
101
111 explicit create_options(const string& serverURI, const string& clientId = string{})
112 : serverURI_{serverURI}, clientId_{clientId} {}
113
126 const string& serverURI, const string& clientId, const persistence_type& persistence
127 )
128 : serverURI_{serverURI}, clientId_{clientId}, persistence_{persistence} {}
129
143 const string& serverURI, const string& clientId, int maxBufferedMessages,
144 const persistence_type& persistence
145 )
146 : serverURI_{serverURI}, clientId_{clientId}, persistence_{persistence} {
147 opts_.maxBufferedMessages = maxBufferedMessages;
148 }
149
162 const string& serverURI, const string& clientId, const create_options& opts,
163 const persistence_type& persistence
164 )
165 : opts_{opts.opts_},
166 serverURI_{serverURI},
167 clientId_{clientId},
168 persistence_{persistence} {}
169
174 : opts_{opts.opts_},
175 serverURI_{opts.serverURI_},
176 clientId_{opts.clientId_},
177 persistence_{opts.persistence_} {}
178
183 : opts_{opts.opts_},
184 serverURI_{std::move(opts.serverURI_)},
185 clientId_{std::move(opts.clientId_)},
186 persistence_{std::move(opts.persistence_)} {}
187
194 void set_server_uri(const string& serverURI) { serverURI_ = serverURI; };
199 const string& get_server_uri() const noexcept { return serverURI_; };
204 void set_client_id(const string& clientId) { clientId_ = clientId; }
209 const string& get_client_id() const noexcept { return clientId_; }
214 void set_persistence(const persistence_type& persistence) { persistence_ = persistence; }
219 const persistence_type& get_persistence() const noexcept { return persistence_; }
224 bool get_send_while_disconnected() const { return to_bool(opts_.sendWhileDisconnected); }
235 void set_send_while_disconnected(bool on, bool anyTime = false) {
236 opts_.sendWhileDisconnected = to_int(on);
237 opts_.allowDisconnectedSendAtAnyTime = to_int(anyTime);
238 }
239
243 int get_max_buffered_messages() const { return opts_.maxBufferedMessages; }
248 void set_max_buffered_messages(int n) { opts_.maxBufferedMessages = n; }
253 int mqtt_version() const { return opts_.MQTTVersion; }
258 void set_mqtt_version(int ver) { opts_.MQTTVersion = ver; }
267 bool get_delete_oldest_messages() const { return to_bool(opts_.deleteOldestMessages); }
274 void set_delete_oldest_messages(bool on) { opts_.deleteOldestMessages = to_int(on); }
281 bool get_restore_messages() const { return to_bool(opts_.restoreMessages); }
288 void set_restore_messages(bool on) { opts_.restoreMessages = to_int(on); }
294 bool get_persist_qos0() const { return to_bool(opts_.persistQoS0); }
300 void set_persist_qos0(bool on) { opts_.persistQoS0 = to_int(on); }
301};
302
305
307
312{
314 create_options opts_;
315
316public:
328 auto server_uri(const string& serverURI) -> self& {
329 opts_.set_server_uri(serverURI);
330 return *this;
331 }
332
336 auto client_id(const string& clientId) -> self& {
337 opts_.set_client_id(clientId);
338 return *this;
339 }
340
345 opts_.set_persistence(persistence);
346 return *this;
347 }
348
359 auto send_while_disconnected(bool on = true, bool anyTime = false) -> self& {
360 opts_.opts_.sendWhileDisconnected = to_int(on);
361 opts_.opts_.allowDisconnectedSendAtAnyTime = to_int(anyTime);
362 return *this;
363 }
364
369 auto max_buffered_messages(int n) -> self& {
370 opts_.opts_.maxBufferedMessages = n;
371 return *this;
372 }
373
377 auto mqtt_version(int ver) -> self& {
378 opts_.opts_.MQTTVersion = ver;
379 return *this;
380 }
381
388 auto delete_oldest_messages(bool on = true) -> self& {
389 opts_.opts_.deleteOldestMessages = to_int(on);
390 return *this;
391 }
392
400 auto restore_messages(bool on = true) -> self& {
401 opts_.opts_.restoreMessages = to_int(on);
402 return *this;
403 }
404
410 auto persist_qos0(bool on = true) -> self& {
411 opts_.opts_.persistQoS0 = to_int(on);
412 return *this;
413 }
414
418 create_options finalize() { return opts_; }
419};
420
422} // namespace mqtt
423
424#endif // __mqtt_create_options_h
auto delete_oldest_messages(bool on=true) -> self &
Definition create_options.h:388
create_options_builder self
Definition create_options.h:318
auto restore_messages(bool on=true) -> self &
Definition create_options.h:400
create_options_builder()
Definition create_options.h:322
auto mqtt_version(int ver) -> self &
Definition create_options.h:377
auto persistence(const persistence_type &persistence) -> self &
Definition create_options.h:344
auto server_uri(const string &serverURI) -> self &
Definition create_options.h:328
auto send_while_disconnected(bool on=true, bool anyTime=false) -> self &
Definition create_options.h:359
create_options finalize()
Definition create_options.h:418
auto client_id(const string &clientId) -> self &
Definition create_options.h:336
auto max_buffered_messages(int n) -> self &
Definition create_options.h:369
auto persist_qos0(bool on=true) -> self &
Definition create_options.h:410
Definition create_options.h:60
void set_restore_messages(bool on)
Definition create_options.h:288
const string & get_server_uri() const noexcept
Definition create_options.h:199
create_options(int mqttVersion)
Definition create_options.h:91
bool get_send_while_disconnected() const
Definition create_options.h:224
create_options(int mqttVersion, int maxBufferedMessages)
bool get_restore_messages() const
Definition create_options.h:281
create_options(const create_options &opts)
Definition create_options.h:173
void set_send_while_disconnected(bool on, bool anyTime=false)
Definition create_options.h:235
int mqtt_version() const
Definition create_options.h:253
create_options()
Definition create_options.h:86
void set_client_id(const string &clientId)
Definition create_options.h:204
friend class create_options_builder
Definition create_options.h:75
create_options(create_options &&opts)
Definition create_options.h:182
bool get_delete_oldest_messages() const
Definition create_options.h:267
int get_max_buffered_messages() const
Definition create_options.h:243
create_options(const string &serverURI, const string &clientId, int maxBufferedMessages, const persistence_type &persistence)
Definition create_options.h:142
create_options(const string &serverURI, const string &clientId, const create_options &opts, const persistence_type &persistence)
Definition create_options.h:161
create_options & operator=(create_options &&rhs)
void set_max_buffered_messages(int n)
Definition create_options.h:248
create_options & operator=(const create_options &rhs)
void set_persistence(const persistence_type &persistence)
Definition create_options.h:214
bool get_persist_qos0() const
Definition create_options.h:294
create_options(const string &serverURI, const string &clientId, const persistence_type &persistence)
Definition create_options.h:125
void set_delete_oldest_messages(bool on)
Definition create_options.h:274
std::shared_ptr< create_options > ptr_t
Definition create_options.h:79
friend class async_client
Definition create_options.h:74
create_options(const string &serverURI, const string &clientId=string{})
Definition create_options.h:111
std::shared_ptr< const create_options > const_ptr_t
Definition create_options.h:81
const string & get_client_id() const noexcept
Definition create_options.h:209
const persistence_type & get_persistence() const noexcept
Definition create_options.h:219
void set_mqtt_version(int ver)
Definition create_options.h:258
void set_persist_qos0(bool on)
Definition create_options.h:300
void set_server_uri(const string &serverURI)
Definition create_options.h:194
Definition async_client.h:60
constexpr no_persistence NO_PERSISTENCE
Definition create_options.h:43
bool to_bool(int n)
Definition types.h:107
create_options::ptr_t create_options_ptr
Definition create_options.h:304
std::variant< no_persistence, string, iclient_persistence * > persistence_type
Definition create_options.h:52
int to_int(bool b)
Definition types.h:113
Definition create_options.h:39