mqtt_broker_state.hpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Copyright (c) 2017-2023 zhllxt
  3. *
  4. * author : zhllxt
  5. * email : 37792738@qq.com
  6. *
  7. * Distributed under the Boost Software License, Version 1.0. (See accompanying
  8. * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  9. */
  10. #ifndef __ASIO2_MQTT_BROKER_STATE_HPP__
  11. #define __ASIO2_MQTT_BROKER_STATE_HPP__
  12. #if defined(_MSC_VER) && (_MSC_VER >= 1200)
  13. #pragma once
  14. #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
  15. #include <asio2/base/detail/shared_mutex.hpp>
  16. #include <asio2/mqtt/options.hpp>
  17. #include <asio2/mqtt/detail/mqtt_invoker.hpp>
  18. #include <asio2/mqtt/detail/mqtt_subscription_map.hpp>
  19. #include <asio2/mqtt/detail/mqtt_shared_target.hpp>
  20. #include <asio2/mqtt/detail/mqtt_retained_message.hpp>
  21. #include <asio2/mqtt/detail/mqtt_security.hpp>
  22. #include <asio2/mqtt/detail/mqtt_session_persistence.hpp>
  23. namespace asio2::mqtt
  24. {
  25. template<class session_t, class args_t>
  26. struct broker_state
  27. {
  28. using session_type = session_t;
  29. using subnode_type = typename session_type::subnode_type;
  30. broker_state(
  31. asio2::detail::mqtt_options& options,
  32. asio2::detail::mqtt_invoker_t<session_t, args_t>& invoker
  33. )
  34. : options_(options)
  35. , invoker_(invoker)
  36. {
  37. security_.default_config();
  38. }
  39. asio2::detail::mqtt_options & options_;
  40. asio2::detail::mqtt_invoker_t<session_t, args_t> & invoker_;
  41. /// client id map
  42. asio2::detail::mqtt_session_persistence<session_t, args_t> mqtt_sessions_;
  43. /// subscription information map
  44. mqtt::subscription_map<std::string_view, subnode_type> subs_map_;
  45. /// shared subscription targets
  46. mqtt::shared_target<mqtt::stnode<session_t>> shared_targets_;
  47. /// A list of messages retained so they can be sent to newly subscribed clients.
  48. mqtt::retained_messages<mqtt::rmnode> retained_messages_;
  49. // Authorization and authentication settings
  50. mqtt::security security_;
  51. };
  52. }
  53. #endif // !__ASIO2_MQTT_BROKER_STATE_HPP__