Aria
2.0.0
C++23 MVVM framework (C++20 minimum) — reactive, coroutine-first, ABI-layered
Toggle main menu visibility
Loading...
Searching...
No Matches
signal.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
export.hpp
"
4
#include "
slot.hpp
"
5
#include <atomic>
6
#include <cstddef>
7
#include <cstdint>
8
#include <memory>
9
#include <mutex>
10
#include <vector>
11
12
namespace
aria::abi
{
13
19
class
ARIA_ABI_API
SignalErased
{
20
public
:
21
SignalErased
();
22
~SignalErased
();
23
24
SignalErased
(
const
SignalErased
&) =
delete
;
25
SignalErased
&
operator=
(
const
SignalErased
&) =
delete
;
26
SignalErased
(
SignalErased
&&) noexcept;
27
SignalErased
& operator=(
SignalErased
&&) noexcept;
28
30
SlotId
connect
(
SlotErased
slot);
31
34
void
disconnect
(
SlotId
id
) noexcept;
35
38
void
emit
(
void
* args) const;
39
41
[[nodiscard]]
std
::
size_t
slot_count
() const noexcept;
42
44
void
clear
() noexcept;
45
46
// ── Internal: weak control-block handle (used for safe disconnect) ──
47
struct ControlBlock;
48
[[nodiscard]]
std
::weak_ptr<ControlBlock>
weak_handle
() const noexcept;
49
53
static
void
disconnect_via_weak
(
54
const
std
::weak_ptr<ControlBlock>& weak,
55
SlotId
id
) noexcept;
56
57
private:
58
std
::shared_ptr<ControlBlock> cb_;
59
};
60
61
}
// namespace aria::abi
aria::abi::SignalErased::slot_count
std::size_t slot_count() const noexcept
Number of currently connected slots.
aria::abi::SignalErased::connect
SlotId connect(SlotErased slot)
Add a slot. Returns its id (used for disconnection).
aria::abi::SignalErased::operator=
SignalErased & operator=(const SignalErased &)=delete
aria::abi::SignalErased::~SignalErased
~SignalErased()
aria::abi::SignalErased::clear
void clear() noexcept
Drop all slots, releasing captures outside the signal lock.
aria::abi::SignalErased::SignalErased
SignalErased(SignalErased &&) noexcept
aria::abi::SignalErased::emit
void emit(void *args) const
Emit to all slots.
aria::abi::SignalErased::SignalErased
SignalErased()
aria::abi::SignalErased::disconnect
void disconnect(SlotId id) noexcept
Disconnect by id.
aria::abi::SignalErased::SignalErased
SignalErased(const SignalErased &)=delete
aria::abi::SignalErased::disconnect_via_weak
static void disconnect_via_weak(const std::weak_ptr< ControlBlock > &weak, SlotId id) noexcept
Disconnect a slot via a weak handle to the signal's control block — used by Subscription's RAII delet...
aria::abi::SignalErased::weak_handle
std::weak_ptr< ControlBlock > weak_handle() const noexcept
aria::abi::SlotErased
Type-erased callback wrapper.
Definition
slot.hpp:35
export.hpp
ARIA_ABI_API
#define ARIA_ABI_API
Definition
export.hpp:21
aria::abi
Definition
signal.hpp:12
std
Definition
validation_key.hpp:110
slot.hpp
aria::abi::SlotId
Opaque slot identifier returned when a callback is registered with a Signal.
Definition
slot.hpp:12
modules
abi
include
aria
abi
signal.hpp
Generated by
1.18.0