7 #if !defined(MQTT_BROKER_SHARED_TARGET_IMPL_HPP)
8 #define MQTT_BROKER_SHARED_TARGET_IMPL_HPP
17 auto it = idx.lower_bound(std::make_tuple(ss.
client_id(), share_name));
18 if (it == idx.end() || (it->share_name != share_name || it->client_id() != ss.
client_id())) {
19 it = idx.emplace_hint(it,
force_move(share_name), ss, std::chrono::steady_clock::now());
24 std::tie(std::ignore, inserted) = e.topic_filters.insert(
force_move(topic_filter));
25 BOOST_ASSERT(inserted);
34 e.topic_filters.insert(
force_move(topic_filter));
42 auto it = idx.find(std::make_tuple(ss.
client_id(), share_name));
43 if (it == idx.end()) {
45 <<
"attempt to erase non exist entry"
46 <<
" share_name:" << share_name
47 <<
" topic_filtere:" << topic_filter
52 idx.modify(it, [&](
auto& e) { e.topic_filters.erase(topic_filter); });
53 if (it->topic_filters.empty()) {
61 idx.erase(r.first, r.second);
67 auto r = idx.equal_range(share_name);
68 for (; r.first != r.second; ++r.first) {
69 auto const& elem = *r.first;
70 auto it = elem.topic_filters.find(topic_filter);
73 if (it == elem.topic_filters.end())
continue;
77 idx.modify(r.first, [](
auto& e) { e.tp = std::chrono::steady_clock::now(); });
83 inline shared_target::entry::entry(
92 inline buffer const& shared_target::entry::client_id()
const {
93 return ssr.get().client_id();
std::chrono::time_point< std::chrono::steady_clock > time_point_t
Definition: time_point_t.hpp:18
#define MQTT_BROKER_NS_END
Definition: broker_namespace.hpp:22
#define MQTT_BROKER_NS_BEGIN
Definition: broker_namespace.hpp:21
void insert(buffer share_name, buffer topic_filter, session_state &ss)
Definition: shared_target_impl.hpp:15
optional< session_state_ref > get_target(buffer const &share_name, buffer const &topic_filter)
Definition: shared_target_impl.hpp:64
void erase(buffer share_name, buffer topic_filter, session_state const &ss)
Definition: shared_target_impl.hpp:40
#define MQTT_LOG(chan, sev)
Definition: log.hpp:135
constexpr std::remove_reference_t< T > && force_move(T &&t)
Definition: move.hpp:20
const_buffer buffer(MQTT_NS::buffer const &data)
create boost::asio::const_buffer from the MQTT_NS::buffer boost::asio::const_buffer is a kind of view...
Definition: buffer.hpp:253
Definition: session_state.hpp:53
buffer const & client_id() const
Definition: session_state.hpp:384