24#include <system_error>
60 template<
typename... CallbackTypes>
85 template<std::
size_t Index>
86 auto
set(std::tuple_element_t<Index, std::tuple<CallbackTypes...>> callback) ->
void
88 std::lock_guard lock(
mutex_);
89 std::get<Index>(
callbacks_) = std::move(callback);
98 auto set(T callback) ->
void
100 std::lock_guard lock(
mutex_);
101 std::get<T>(
callbacks_) = std::move(callback);
109 template<std::
size_t Index>
110 [[nodiscard]]
auto get() const -> std::tuple_element_t<Index, std::tuple<CallbackTypes...>>
112 std::lock_guard lock(
mutex_);
122 [[nodiscard]]
auto get() const -> T
124 std::lock_guard lock(
mutex_);
138 template<std::size_t Index,
typename... Args>
144 callback(std::forward<Args>(args)...);
154 template<
typename T,
typename... Args>
160 callback(std::forward<Args>(args)...);
171 template<std::size_t Index,
typename... Args>
185 std::lock_guard lock(
mutex_);
193 template<std::
size_t Index>
196 std::lock_guard lock(
mutex_);
217 std::function<void(
const std::vector<uint8_t>&)>,
218 std::function<void()>,
219 std::function<void()>,
220 std::function<void(std::error_code)>
231 static constexpr std::size_t
error = 3;
Thread-safe callback storage and invocation utility.
auto invoke(Args &&... args) -> void
Invokes a callback at the specified index if set.
auto clear() -> void
Clears a specific callback.
auto clear() -> void
Clears all callbacks.
callback_manager()=default
Default constructor.
std::tuple< CallbackTypes... > callbacks_
callback_manager(const callback_manager &)=delete
auto get() const -> T
Gets a callback by type.
auto set(T callback) -> void
Sets a callback by type.
~callback_manager()=default
Destructor.
callback_manager & operator=(const callback_manager &)=delete
callback_manager(callback_manager &&) noexcept=default
auto set(std::tuple_element_t< Index, std::tuple< CallbackTypes... > > callback) -> void
Sets a callback at the specified index.
auto invoke_if(bool condition, Args &&... args) -> void
Invokes a callback conditionally.
auto get() const -> std::tuple_element_t< Index, std::tuple< CallbackTypes... > >
Gets a callback at the specified index.
Utility components for network_system.
Callback indices for tcp_client_callbacks.
static constexpr std::size_t receive
static constexpr std::size_t error
static constexpr std::size_t connected
static constexpr std::size_t disconnected