PahoMqttCpp
MQTT C++ Client for POSIX and Windows
Loading...
Searching...
No Matches
topic.h
Go to the documentation of this file.
1
7
8/*******************************************************************************
9 * Copyright (c) 2013-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_topic_h
25#define __mqtt_topic_h
26
27#include <vector>
28#include <variant>
29
30#include "MQTTAsync.h"
31#include "mqtt/delivery_token.h"
32#include "mqtt/message.h"
34#include "mqtt/types.h"
35
36namespace mqtt {
37
38class iasync_client;
39
41
53class topic
54{
56 iasync_client& cli_;
58 string name_;
60 int qos_;
62 bool retained_;
63
64public:
66 using ptr_t = std::shared_ptr<topic>;
68 using const_ptr_t = std::shared_ptr<const topic>;
69
78 iasync_client& cli, const string& name, int qos = message::DFLT_QOS,
79 bool retained = message::DFLT_RETAINED
80 )
81 : cli_(cli), name_(name), qos_(qos), retained_(retained) {}
82
90 static ptr_t create(
91 iasync_client& cli, const string& name, int qos = message::DFLT_QOS,
92 bool retained = message::DFLT_RETAINED
93 ) {
94 return std::make_shared<topic>(cli, name, qos, retained);
95 }
96
100 iasync_client& get_client() { return cli_; }
105 const string& get_name() const { return name_; }
112 static std::vector<std::string> split(const std::string& topic);
117 int get_qos() const { return qos_; }
122 bool get_retained() const { return retained_; }
127 void set_qos(int qos) {
129 qos_ = qos;
130 }
131
135 void set_retained(bool retained) { retained_ = retained; }
144 delivery_token_ptr publish(const void* payload, size_t n);
156 delivery_token_ptr publish(const void* payload, size_t n, int qos, bool retained);
175 delivery_token_ptr publish(binary_ref payload, int qos, bool retained);
185 string to_string() const { return name_; }
186};
187
190
193
195// Topic Filter
197
214{
220 std::variant<string, std::vector<string>> filter_;
221
222public:
230 explicit topic_filter(const string& filter);
236 static bool is_wildcard(char c) { return c == '+' || c == '#'; }
242 static bool is_wildcard(const string& s) { return s.size() == 1 && is_wildcard(s[0]); }
250 static bool has_wildcards(const string& filter);
257 bool has_wildcards() const;
265 bool matches(const string& topic) const;
270 string to_string() const;
271};
272
274} // namespace mqtt
275
276#endif // __mqtt_topic_h
Definition iasync_client.h:60
static constexpr bool DFLT_RETAINED
Definition message.h:62
static void validate_qos(int qos)
Definition message.h:330
static constexpr int DFLT_QOS
Definition message.h:60
Definition subscribe_options.h:49
static bool has_wildcards(const string &filter)
static bool is_wildcard(const string &s)
Definition topic.h:242
bool has_wildcards() const
static bool is_wildcard(char c)
Definition topic.h:236
bool matches(const string &topic) const
string to_string() const
topic_filter(const string &filter)
Definition topic.h:54
bool get_retained() const
Definition topic.h:122
static ptr_t create(iasync_client &cli, const string &name, int qos=message::DFLT_QOS, bool retained=message::DFLT_RETAINED)
Definition topic.h:90
iasync_client & get_client()
Definition topic.h:100
void set_qos(int qos)
Definition topic.h:127
delivery_token_ptr publish(const void *payload, size_t n)
delivery_token_ptr publish(const void *payload, size_t n, int qos, bool retained)
topic(iasync_client &cli, const string &name, int qos=message::DFLT_QOS, bool retained=message::DFLT_RETAINED)
Definition topic.h:77
int get_qos() const
Definition topic.h:117
std::shared_ptr< topic > ptr_t
Definition topic.h:66
void set_retained(bool retained)
Definition topic.h:135
token_ptr subscribe(const subscribe_options &opts=subscribe_options())
std::shared_ptr< const topic > const_ptr_t
Definition topic.h:68
delivery_token_ptr publish(binary_ref payload)
delivery_token_ptr publish(binary_ref payload, int qos, bool retained)
static std::vector< std::string > split(const std::string &topic)
const string & get_name() const
Definition topic.h:105
string to_string() const
Definition topic.h:185
Definition async_client.h:60
buffer_ref< char > binary_ref
Definition buffer_ref.h:305
topic::ptr_t topic_ptr
Definition topic.h:189
delivery_token::ptr_t delivery_token_ptr
Definition delivery_token.h:127
token::ptr_t token_ptr
Definition token.h:513
topic::const_ptr_t const_topic_ptr
Definition topic.h:192