1#ifndef LIBSBX_SIGNAL_SLOT_STATE_HPP_
2#define LIBSBX_SIGNAL_SLOT_STATE_HPP_
8#include <libsbx/signals/lockable.hpp>
10namespace sbx::signals {
12using group_id = std::int32_t;
16 template<lockable,
typename...>
25 _is_blocked{
false} { }
29 virtual auto is_connected()
const noexcept ->
bool {
33 auto disconnect()
noexcept ->
bool {
34 auto result = _is_connected.exchange(
false);
43 auto is_blocked()
const noexcept {
44 return _is_blocked.load();
47 auto block()
noexcept ->
void {
48 _is_blocked.store(
true);
51 auto unblock()
noexcept ->
void {
52 _is_blocked.store(
false);
57 virtual auto do_disconnect() ->
void { }
59 auto index()
const -> std::size_t {
63 auto set_index(std::size_t index) ->
void {
67 auto group()
const -> group_id {
75 std::atomic<bool> _is_connected;
76 std::atomic<bool> _is_blocked;
Definition: signal.hpp:16
Definition: slot_state.hpp:14