47 inline static std::string_view logger_name =
"ores.comms.net.server_session";
51 static auto instance = make_logger(logger_name);
60 std::string event_type;
61 std::chrono::system_clock::time_point timestamp;
69 std::string error_message;
70 std::chrono::system_clock::time_point timestamp;
82 explicit server_session(std::unique_ptr<connection> conn, std::string server_id,
83 std::shared_ptr<messaging::message_dispatcher> dispatcher,
84 boost::asio::any_io_executor io_executor,
85 std::shared_ptr<service::subscription_manager> subscription_mgr =
nullptr);
92 boost::asio::awaitable<void>
run();
112 std::chrono::system_clock::time_point timestamp);
125 std::chrono::system_clock::time_point timestamp);
133 boost::asio::awaitable<bool> perform_handshake();
138 boost::asio::awaitable<void> process_messages();
146 boost::asio::awaitable<void> run_notification_writer();
154 boost::asio::awaitable<void> send_pending_notifications();
161 boost::asio::awaitable<void> send_pending_database_status();
166 void register_with_subscription_manager();
171 void unregister_from_subscription_manager();
173 std::unique_ptr<connection> conn_;
174 std::string server_id_;
175 std::shared_ptr<messaging::message_dispatcher> dispatcher_;
176 std::shared_ptr<service::subscription_manager> subscription_mgr_;
177 std::uint32_t sequence_number_;
178 bool handshake_complete_;
179 std::atomic<bool> active_{
false};
182 boost::asio::strand<boost::asio::any_io_executor> write_strand_;
185 boost::asio::steady_timer notification_signal_;
188 mutable std::mutex notification_mutex_;
189 std::queue<pending_notification> pending_notifications_;
190 std::queue<pending_database_status> pending_database_status_;
bool queue_notification(const std::string &event_type, std::chrono::system_clock::time_point timestamp)
Queue a notification to be sent to this session's client.
Definition server_session.cpp:65
bool queue_database_status(bool available, const std::string &error_message, std::chrono::system_clock::time_point timestamp)
Queue a database status notification to be sent to this client.
Definition server_session.cpp:87