7 #if !defined(MQTT_BROKER_INFLIGHT_MESSAGE_HPP)
8 #define MQTT_BROKER_INFLIGHT_MESSAGE_HPP
14 #include <boost/asio/steady_timer.hpp>
34 std::shared_ptr<as::steady_timer> tim_message_expiry)
37 tim_message_expiry_ {
force_move(tim_message_expiry) }
53 optional<store_message_variant> msg_opt;
54 if (tim_message_expiry_) {
57 [&](v5::basic_publish_message<
sizeof(
packet_id_t)>
const& m) {
60 std::chrono::duration_cast<std::chrono::seconds>(
61 tim_message_expiry_->expiry() - std::chrono::steady_clock::now()
64 updated_msg.update_prop(
65 v5::property::message_expiry_interval(
66 static_cast<uint32_t
>(d)
80 ep.send_store_message(msg_opt ? msg_opt.value() : msg_, life_keeper_);
88 std::shared_ptr<as::steady_timer> tim_message_expiry_;
96 std::shared_ptr<as::steady_timer> tim_message_expiry
98 messages_.emplace_back(
106 for (
auto const& ifm : messages_) {
115 template <
typename Tag>
117 return messages_.get<Tag>();
120 template <
typename Tag>
121 decltype(
auto)
get()
const {
122 return messages_.get<Tag>();
126 using mi_inflight_message = mi::multi_index_container<
136 mi::ordered_non_unique<
138 BOOST_MULTI_INDEX_MEMBER(
inflight_message, std::shared_ptr<as::steady_timer>, tim_message_expiry_)
143 mi_inflight_message messages_;
#define MQTT_BROKER_NS_END
Definition: broker_namespace.hpp:22
#define MQTT_BROKER_NS_BEGIN
Definition: broker_namespace.hpp:21
Definition: inflight_message.hpp:29
void send(endpoint_t &ep) const
Definition: inflight_message.hpp:52
inflight_message(store_message_variant msg, any life_keeper, std::shared_ptr< as::steady_timer > tim_message_expiry)
Definition: inflight_message.hpp:31
packet_id_t packet_id() const
Definition: inflight_message.hpp:40
Definition: inflight_message.hpp:91
void insert(store_message_variant msg, any life_keeper, std::shared_ptr< as::steady_timer > tim_message_expiry)
Definition: inflight_message.hpp:93
void clear()
Definition: inflight_message.hpp:111
decltype(auto) get()
Definition: inflight_message.hpp:116
void send_all_messages(endpoint_t &ep)
Definition: inflight_message.hpp:105
server<>::endpoint_t endpoint_t
Definition: common_type.hpp:17
endpoint_t::packet_id_t packet_id_t
Definition: common_type.hpp:20
constexpr decltype(auto) visit(Visitor &&vis, Variants &&... vars)
Definition: variant.hpp:60
basic_store_message_variant< 2 > store_message_variant
Definition: message_variant.hpp:119
constexpr std::remove_reference_t< T > && force_move(T &&t)
Definition: move.hpp:20
lambda_visitor< Lambdas... > make_lambda_visitor(Lambdas &&... lambdas)
Definition: visitor_util.hpp:37