3#include "util/CoroutineGroup.hpp"
4#include "util/Taggable.hpp"
5#include "web/SubscriptionContextInterface.hpp"
6#include "web/ng/Connection.hpp"
7#include "web/ng/Error.hpp"
8#include "web/ng/impl/WsConnection.hpp"
10#include <boost/asio/any_io_executor.hpp>
11#include <boost/asio/spawn.hpp>
12#include <boost/signals2/variadic_signal.hpp>
38 std::reference_wrapper<impl::WsConnectionBase> connection_;
39 std::optional<size_t> maxSendQueueSize_;
41 boost::asio::yield_context yield_;
45 std::atomic_bool disconnected_{
false};
46 std::atomic_bool gotError_{
false};
54 std::atomic_uint32_t apiSubversion_ = 0u;
69 impl::WsConnectionBase& connection,
70 std::optional<size_t> maxSendQueueSize,
71 boost::asio::yield_context yield,
84 send(std::shared_ptr<std::string> message)
override;
CoroutineGroup is a helper class to manage a group of coroutines. It allows to spawn multiple corouti...
Definition CoroutineGroup.hpp:18
A factory for TagDecorator instantiation.
Definition Taggable.hpp:165
An interface to provide connection functionality for subscriptions.
Definition SubscriptionContextInterface.hpp:20
std::function< void(SubscriptionContextInterface *)> OnDisconnectSlot
Alias for on disconnect slot.
Definition SubscriptionContextInterface.hpp:35
A context of a WsBase connection for subscriptions.
Definition SubscriptionContext.hpp:20
A class representing a connection to a client.
Definition Connection.hpp:93
std::function< bool(Error const &, Connection const &)> ErrorHandler
Error handler definition. Error handler returns true if connection should be closed false otherwise.
Definition SubscriptionContext.hpp:35
void onDisconnect(OnDisconnectSlot const &slot) override
Connect a slot to onDisconnect connection signal.
Definition SubscriptionContext.cpp:68
void send(std::shared_ptr< std::string > message) override
Send message to the client.
Definition SubscriptionContext.cpp:40
void setApiSubversion(uint32_t value) override
Set the API subversion.
Definition SubscriptionContext.cpp:74
SubscriptionContext(util::TagDecoratorFactory const &factory, impl::WsConnectionBase &connection, std::optional< size_t > maxSendQueueSize, boost::asio::yield_context yield, ErrorHandler errorHandler)
Construct a new Subscription Context object.
Definition SubscriptionContext.cpp:18
uint32_t apiSubversion() const override
Get the API subversion.
Definition SubscriptionContext.cpp:80
void disconnect(boost::asio::yield_context yield)
Notify the context that related connection is disconnected and wait for all the task to complete.
Definition SubscriptionContext.cpp:86