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-2025 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
53using persistence_type = std::variant<no_persistence, string, iclient_persistence*>;
54
56
77{
79 MQTTAsync_createOptions opts_ MQTTAsync_createOptions_initializer5;
80
82 string serverURI_{};
83
85 string clientId_{};
86
88 persistence_type persistence_{};
89
91 friend class async_client;
93
94public:
96 using ptr_t = std::shared_ptr<create_options>;
98 using const_ptr_t = std::shared_ptr<const create_options>;
99
108 explicit create_options(int mqttVersion) : create_options() {
109 opts_.MQTTVersion = mqttVersion;
110 }
117 create_options(int mqttVersion, int maxBufferedMessages);
131 const string& serverURI, const string& clientId = string{},
132 const persistence_type& persistence = NO_PERSISTENCE
133 )
134 : serverURI_{serverURI}, clientId_{clientId}, persistence_{persistence} {}
149 const string& serverURI, const string& clientId, int maxBufferedMessages,
150 const persistence_type& persistence = NO_PERSISTENCE
151 )
152 : serverURI_{serverURI}, clientId_{clientId}, persistence_{persistence} {
153 opts_.maxBufferedMessages = maxBufferedMessages;
154 }
168 const string& serverURI, const string& clientId, const create_options& opts,
169 const persistence_type& persistence
170 )
171 : opts_{opts.opts_},
172 serverURI_{serverURI},
173 clientId_{clientId},
174 persistence_{persistence} {}
180 : opts_{opts.opts_},
181 serverURI_{opts.serverURI_},
182 clientId_{opts.clientId_},
183 persistence_{opts.persistence_} {}
189 : opts_{opts.opts_},
190 serverURI_{std::move(opts.serverURI_)},
191 clientId_{std::move(opts.clientId_)},
192 persistence_{std::move(opts.persistence_)} {}
193
200 void set_server_uri(const string& serverURI) { serverURI_ = serverURI; };
205 const string& get_server_uri() const noexcept { return serverURI_; };
210 void set_client_id(const string& clientId) { clientId_ = clientId; }
215 const string& get_client_id() const noexcept { return clientId_; }
220 void set_persistence(const persistence_type& persistence) { persistence_ = persistence; }
225 const persistence_type& get_persistence() const noexcept { return persistence_; }
230 bool get_send_while_disconnected() const { return to_bool(opts_.sendWhileDisconnected); }
241 void set_send_while_disconnected(bool on, bool anyTime = false) {
242 opts_.sendWhileDisconnected = to_int(on);
243 opts_.allowDisconnectedSendAtAnyTime = to_int(anyTime);
244 }
249 int get_max_buffered_messages() const { return opts_.maxBufferedMessages; }
254 void set_max_buffered_messages(int n) { opts_.maxBufferedMessages = n; }
259 int mqtt_version() const { return opts_.MQTTVersion; }
264 void set_mqtt_version(int ver) { opts_.MQTTVersion = ver; }
273 bool get_delete_oldest_messages() const { return to_bool(opts_.deleteOldestMessages); }
280 void set_delete_oldest_messages(bool on) { opts_.deleteOldestMessages = to_int(on); }
287 bool get_restore_messages() const { return to_bool(opts_.restoreMessages); }
294 void set_restore_messages(bool on) { opts_.restoreMessages = to_int(on); }
300 bool get_persist_qos0() const { return to_bool(opts_.persistQoS0); }
306 void set_persist_qos0(bool on) { opts_.persistQoS0 = to_int(on); }
307};
308
311
313
318{
320 create_options opts_;
321
322public:
334 auto server_uri(const string& serverURI) -> self& {
335 opts_.set_server_uri(serverURI);
336 return *this;
337 }
342 auto client_id(const string& clientId) -> self& {
343 opts_.set_client_id(clientId);
344 return *this;
345 }
352 return *this;
353 }
365 auto send_while_disconnected(bool on = true, bool anyTime = false) -> self& {
366 opts_.opts_.sendWhileDisconnected = to_int(on);
367 opts_.opts_.allowDisconnectedSendAtAnyTime = to_int(anyTime);
368 return *this;
369 }
375 auto max_buffered_messages(int n) -> self& {
376 opts_.opts_.maxBufferedMessages = n;
377 return *this;
378 }
383 auto mqtt_version(int ver) -> self& {
384 opts_.opts_.MQTTVersion = ver;
385 return *this;
386 }
394 auto delete_oldest_messages(bool on = true) -> self& {
395 opts_.opts_.deleteOldestMessages = to_int(on);
396 return *this;
397 }
406 auto restore_messages(bool on = true) -> self& {
407 opts_.opts_.restoreMessages = to_int(on);
408 return *this;
409 }
416 auto persist_qos0(bool on = true) -> self& {
417 opts_.opts_.persistQoS0 = to_int(on);
418 return *this;
419 }
424 create_options finalize() { return opts_; }
425};
426
428} // namespace mqtt
429
430#endif // __mqtt_create_options_h
Definition async_client.h:137
Definition create_options.h:318
auto delete_oldest_messages(bool on=true) -> self &
Definition create_options.h:394
auto restore_messages(bool on=true) -> self &
Definition create_options.h:406
create_options_builder()
Definition create_options.h:328
auto mqtt_version(int ver) -> self &
Definition create_options.h:383
auto persistence(const persistence_type &persistence) -> self &
Definition create_options.h:350
auto server_uri(const string &serverURI) -> self &
Definition create_options.h:334
auto send_while_disconnected(bool on=true, bool anyTime=false) -> self &
Definition create_options.h:365
create_options finalize()
Definition create_options.h:424
auto client_id(const string &clientId) -> self &
Definition create_options.h:342
auto max_buffered_messages(int n) -> self &
Definition create_options.h:375
auto persist_qos0(bool on=true) -> self &
Definition create_options.h:416
Definition create_options.h:77
void set_restore_messages(bool on)
Definition create_options.h:294
const string & get_server_uri() const noexcept
Definition create_options.h:205
create_options(int mqttVersion)
Definition create_options.h:108
create_options(const string &serverURI, const string &clientId=string{}, const persistence_type &persistence=NO_PERSISTENCE)
Definition create_options.h:130
bool get_send_while_disconnected() const
Definition create_options.h:230
create_options(int mqttVersion, int maxBufferedMessages)
bool get_restore_messages() const
Definition create_options.h:287
create_options(const create_options &opts)
Definition create_options.h:179
void set_send_while_disconnected(bool on, bool anyTime=false)
Definition create_options.h:241
create_options(const string &serverURI, const string &clientId, int maxBufferedMessages, const persistence_type &persistence=NO_PERSISTENCE)
Definition create_options.h:148
int mqtt_version() const
Definition create_options.h:259
create_options()
Definition create_options.h:103
void set_client_id(const string &clientId)
Definition create_options.h:210
create_options(create_options &&opts)
Definition create_options.h:188
bool get_delete_oldest_messages() const
Definition create_options.h:273
int get_max_buffered_messages() const
Definition create_options.h:249
create_options(const string &serverURI, const string &clientId, const create_options &opts, const persistence_type &persistence)
Definition create_options.h:167
create_options & operator=(create_options &&rhs)
void set_max_buffered_messages(int n)
Definition create_options.h:254
create_options & operator=(const create_options &rhs)
void set_persistence(const persistence_type &persistence)
Definition create_options.h:220
bool get_persist_qos0() const
Definition create_options.h:300
void set_delete_oldest_messages(bool on)
Definition create_options.h:280
std::shared_ptr< create_options > ptr_t
Definition create_options.h:96
std::shared_ptr< const create_options > const_ptr_t
Definition create_options.h:98
const string & get_client_id() const noexcept
Definition create_options.h:215
const persistence_type & get_persistence() const noexcept
Definition create_options.h:225
void set_mqtt_version(int ver)
Definition create_options.h:264
void set_persist_qos0(bool on)
Definition create_options.h:306
void set_server_uri(const string &serverURI)
Definition create_options.h:200
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:310
int to_int(bool b)
Definition types.h:113
std::variant< no_persistence, string, iclient_persistence * > persistence_type
Definition create_options.h:53
Definition create_options.h:39