7#if !defined(ASYNC_MQTT_PACKET_TOPIC_SHARENAME_HPP)
8#define ASYNC_MQTT_PACKET_TOPIC_SHARENAME_HPP
10#include <async_mqtt/util/buffer.hpp>
36 typename std::enable_if_t<
37 std::is_convertible_v<std::decay_t<AllTopic>, std::string_view>,
43 ): all_topic_{std::forward<AllTopic>(
all_topic)} {
44 auto const shared_prefix = std::string_view(
"$share/");
45 if (all_topic_.substr(0, shared_prefix.size()) == shared_prefix) {
47 sharename_ = all_topic_.substr(shared_prefix.size());
49 auto const idx = sharename_.find_first_of(
'/');
50 if (idx == 0 || idx == std::string_view::npos)
return;
52 topic_ = sharename_.substr(idx + 1);
53 sharename_ = sharename_.substr(0, sharename_.size() - topic_.size() - 1);
64 std::string
const&
topic()
const {
91 operator bool()
const {
92 return !topic_.empty();
104 std::tie(lhs.topic_, lhs.sharename_) <
105 std::tie(rhs.topic_, rhs.sharename_);
117 std::tie(lhs.topic_, lhs.sharename_) ==
118 std::tie(rhs.topic_, rhs.sharename_);
122 std::string all_topic_;
124 std::string sharename_;
topic and sharename
Definition topic_sharename.hpp:27
std::string const & topic() const
Get topic.
Definition topic_sharename.hpp:64
std::string const & sharename() const
Get sharename.
Definition topic_sharename.hpp:72
friend bool operator==(topic_sharename const &lhs, topic_sharename const &rhs)
equal operator
Definition topic_sharename.hpp:115
topic_sharename(AllTopic &&all_topic)
constructor
Definition topic_sharename.hpp:41
friend bool operator<(topic_sharename const &lhs, topic_sharename const &rhs)
less than operator
Definition topic_sharename.hpp:102
std::string const & all_topic() const
Get all_topic.
Definition topic_sharename.hpp:82