2#ifndef LIBSBX_SIGNAL_SLOT_STATE_HPP_
3#define LIBSBX_SIGNAL_SLOT_STATE_HPP_
9#include <libsbx/signals/lockable.hpp>
11namespace sbx::signals {
13using group_id = std::int32_t;
17 template<lockable,
typename...>
26 _is_blocked{
false} { }
30 virtual auto is_connected()
const noexcept ->
bool {
34 auto disconnect()
noexcept ->
bool {
35 auto result = _is_connected.exchange(
false);
44 auto is_blocked()
const noexcept {
45 return _is_blocked.load();
48 auto block()
noexcept ->
void {
49 _is_blocked.store(
true);
52 auto unblock()
noexcept ->
void {
53 _is_blocked.store(
false);
58 virtual auto do_disconnect() ->
void { }
60 auto index()
const -> std::size_t {
64 auto set_index(std::size_t index) ->
void {
68 auto group()
const -> group_id {
76 std::atomic<bool> _is_connected;
77 std::atomic<bool> _is_blocked;
Definition: signal.hpp:17
Definition: slot_state.hpp:15