2#ifndef LIBSBX_SIGNAL_OBSERVER_HPP_
3#define LIBSBX_SIGNAL_OBSERVER_HPP_
9#include <libsbx/signals/lockable.hpp>
11namespace sbx::signals {
15template<
typename Type>
16constexpr auto is_observer_v = std::is_base_of_v<observer_type, std::remove_pointer_t<std::remove_reference_t<Type>>>;
18template<lockable Lockable>
21 template <lockable,
typename ...>
26 using lockable_type = Lockable;
32 void disconnect_all() {
33 auto lock = std::unique_lock<lockable_type>{_mutex};
41 auto lock = std::unique_lock<lockable_type>{_mutex};
43 _connections.emplace_back(std::move(
connection));
47 std::vector<scoped_connection> _connections;
Definition: connection.hpp:59
Definition: observer.hpp:19
Definition: signal.hpp:17
Definition: observer.hpp:13