PahoMqttCpp
MQTT C++ Client for POSIX and Windows
Loading...
Searching...
No Matches
response_options.h
Go to the documentation of this file.
1
6
7/*******************************************************************************
8 * Copyright (c) 2019-2025 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_response_options_h
24#define __mqtt_response_options_h
25
26#include "MQTTAsync.h"
27#include "mqtt/delivery_token.h"
28#include "mqtt/token.h"
29#include "subscribe_options.h"
30
31namespace mqtt {
32
33class token_test;
34
36// response_options
38
51{
53 MQTTAsync_responseOptions opts_ MQTTAsync_responseOptions_initializer;
54
57
59 properties props_;
60
62 std::vector<MQTTSubscribe_options> subOpts_;
63
65 friend class async_client;
66
68 void update_c_struct();
69
70public:
75 explicit response_options(int mqttVersion = MQTTVERSION_DEFAULT) {
76 set_mqtt_version(mqttVersion);
77 }
78
83 response_options(const token_ptr& tok, int mqttVersion = MQTTVERSION_DEFAULT);
107#if defined(UNIT_TESTS)
108 const auto& c_struct() const { return opts_; }
109#endif
115 void set_mqtt_version(int mqttVersion);
120 void set_token(const token_ptr& tok);
124 const properties& get_properties() const { return props_; }
129 void set_properties(const properties& props) {
130 props_ = props;
131 opts_.properties = props_.c_struct();
132 }
133
138 props_ = std::move(props);
139 opts_.properties = props_.c_struct();
140 }
141
146 return subscribe_options{opts_.subscribeOptions};
147 }
148
152 std::vector<subscribe_options> get_subscribe_many_options() const;
162 void set_subscribe_many_options(const std::vector<subscribe_options>& opts);
168 void set_subscribe_options(const std::vector<subscribe_options>& opts) {
170 }
171};
172
174
179{
181 response_options opts_;
182
183public:
189 explicit response_options_builder(int mqttVersion = MQTTVERSION_DEFAULT)
190 : opts_(mqttVersion) {}
191
196 auto mqtt_version(int mqttVersion) -> self& {
197 opts_.set_mqtt_version(mqttVersion);
198 return *this;
199 }
200
204 auto token(const token_ptr& tok) -> self& {
205 opts_.set_token(tok);
206 return *this;
207 }
208
212 auto properties(mqtt::properties&& props) -> self& {
213 opts_.set_properties(std::move(props));
214 return *this;
215 }
216
220 auto properties(const mqtt::properties& props) -> self& {
221 opts_.set_properties(props);
222 return *this;
223 }
224
228 auto subscribe_opts(const subscribe_options& opts) -> self& {
229 opts_.set_subscribe_options(opts);
230 return *this;
231 }
232
236 auto subscribe_many_opts(const std::vector<subscribe_options>& opts) -> self& {
237 opts_.set_subscribe_options(opts);
238 return *this;
239 }
240
244 auto subscribe_opts(const std::vector<subscribe_options>& opts) -> self& {
245 opts_.set_subscribe_options(opts);
246 return *this;
247 }
248
252 response_options finalize() { return opts_; }
253};
254
256// delivery_response_options
258
264{
266 MQTTAsync_responseOptions opts_;
267
270
272 friend class async_client;
273
274public:
278 delivery_response_options(int mqttVersion = MQTTVERSION_DEFAULT);
285 const delivery_token_ptr& dtok, int mqttVersion = MQTTVERSION_DEFAULT
286 );
290#if defined(UNIT_TESTS)
291 const MQTTAsync_responseOptions& c_struct() const { return opts_; }
292#endif
297 void set_token(const delivery_token_ptr& dtok) {
298 dtok_ = dtok;
299 opts_.context = dtok.get();
300 }
301};
302
304} // namespace mqtt
305
306#endif // __mqtt_response_options_h
void set_token(const delivery_token_ptr &dtok)
Definition response_options.h:297
friend class async_client
Definition response_options.h:272
delivery_response_options(int mqttVersion=MQTTVERSION_DEFAULT)
delivery_response_options(const delivery_token_ptr &dtok, int mqttVersion=MQTTVERSION_DEFAULT)
std::weak_ptr< delivery_token > weak_ptr_t
Definition delivery_token.h:62
Definition properties.h:293
properties()
Definition properties.h:358
auto properties(mqtt::properties &&props) -> self &
Definition response_options.h:212
auto subscribe_opts(const subscribe_options &opts) -> self &
Definition response_options.h:228
auto properties(const mqtt::properties &props) -> self &
Definition response_options.h:220
auto token(const token_ptr &tok) -> self &
Definition response_options.h:204
auto subscribe_opts(const std::vector< subscribe_options > &opts) -> self &
Definition response_options.h:244
response_options_builder self
Definition response_options.h:185
response_options finalize()
Definition response_options.h:252
auto mqtt_version(int mqttVersion) -> self &
Definition response_options.h:196
auto subscribe_many_opts(const std::vector< subscribe_options > &opts) -> self &
Definition response_options.h:236
response_options_builder(int mqttVersion=MQTTVERSION_DEFAULT)
Definition response_options.h:189
Definition response_options.h:51
std::vector< subscribe_options > get_subscribe_many_options() const
response_options(int mqttVersion=MQTTVERSION_DEFAULT)
Definition response_options.h:75
void set_token(const token_ptr &tok)
response_options(const token_ptr &tok, int mqttVersion=MQTTVERSION_DEFAULT)
subscribe_options get_subscribe_options() const
Definition response_options.h:145
void set_subscribe_options(const subscribe_options &opts)
response_options & operator=(const response_options &rhs)
void set_subscribe_options(const std::vector< subscribe_options > &opts)
Definition response_options.h:168
void set_mqtt_version(int mqttVersion)
friend class async_client
Definition response_options.h:65
response_options(response_options &&other)
void set_properties(properties &&props)
Definition response_options.h:137
void set_subscribe_many_options(const std::vector< subscribe_options > &opts)
void set_properties(const properties &props)
Definition response_options.h:129
response_options(const response_options &other)
const properties & get_properties() const
Definition response_options.h:124
response_options & operator=(response_options &&rhs)
Definition subscribe_options.h:49
std::weak_ptr< token > weak_ptr_t
Definition token.h:61
Definition async_client.h:60
delivery_token::ptr_t delivery_token_ptr
Definition delivery_token.h:127
token::ptr_t token_ptr
Definition token.h:513