/* * Copyright (c) 2017-2023 zhllxt * * author : zhllxt * email : 37792738@qq.com * * Distributed under the Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * refrenced from : mqtt_cpp/include/mqtt/broker/session_state.hpp */ #ifndef __ASIO2_MQTT_SESSION_STATE_HPP__ #define __ASIO2_MQTT_SESSION_STATE_HPP__ #if defined(_MSC_VER) && (_MSC_VER >= 1200) #pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include #include #include #include #include #include #include #include #include #include #include #include #include namespace asio2::mqtt { class session_state { public: session_state() { } ~session_state() { } void clean() { //inflight_messages_.clear(); offline_messages_.clear(); qos2_publish_processed_.clear(); //shared_targets_.erase(*this); //unsubscribe_all(); } void exactly_once_start(mqtt::two_byte_integer::value_type packet_id) { qos2_publish_processed_.insert(packet_id); } bool exactly_once_processing(mqtt::two_byte_integer::value_type packet_id) const { return qos2_publish_processed_.find(packet_id) != qos2_publish_processed_.end(); } void exactly_once_finish(mqtt::two_byte_integer::value_type packet_id) { qos2_publish_processed_.erase(packet_id); } protected: //std::shared_ptr will_expiry_timer_; //std::optional will_value_; //sub_con_map& subs_map_; //shared_target& shared_targets_; //con_sp_t con_; std::string_view client_id_; std::optional will_delay_; std::optional session_expiry_interval_; std::shared_ptr session_expiry_timer_; //inflight_messages inflight_messages_; std::set qos2_publish_processed_; offline_messages offline_messages_; //std::set handles_; // to efficient remove }; } #endif // !__ASIO2_MQTT_SESSION_STATE_HPP__