Aria 2.0.0
C++23 MVVM framework (C++20 minimum) — reactive, coroutine-first, ABI-layered
Loading...
Searching...
No Matches
aria::Subscription Class Reference

RAII handle to a single subscription. More...

#include <subscription.hpp>

Public Member Functions

 Subscription () noexcept=default
template<class T>
 Subscription (std::shared_ptr< T > owner) noexcept
 Construct from any shared pointer.
template<class Fn>
requires std::invocable<std::decay_t<Fn>&>
 Subscription (Fn &&on_disconnect)
 Invoke a disconnect callback exactly once when this handle is released.
 Subscription (std::function< void()> on_disconnect)
 Subscription (const Subscription &)=delete
Subscriptionoperator= (const Subscription &)=delete
 Subscription (Subscription &&) noexcept=default
Subscriptionoperator= (Subscription &&) noexcept=default
 ~Subscription () noexcept=default
void release () noexcept
 Explicitly disconnect now (instead of at destruction).
bool active () const noexcept
 operator bool () const noexcept

Detailed Description

RAII handle to a single subscription.

Dropping it (or calling release()) severs the underlying connection. Move-only.

Constructor & Destructor Documentation

◆ Subscription() [1/6]

aria::Subscription::Subscription ( )
defaultnoexcept

◆ Subscription() [2/6]

template<class T>
aria::Subscription::Subscription ( std::shared_ptr< T > owner)
inlineexplicitnoexcept

Construct from any shared pointer.

The common case: pass a std::shared_ptr<ReactionNode> returned from the reactive layer; its destructor detaches from the graph.

◆ Subscription() [3/6]

template<class Fn>
requires std::invocable<std::decay_t<Fn>&>
aria::Subscription::Subscription ( Fn && on_disconnect)
inlineexplicit

Invoke a disconnect callback exactly once when this handle is released.

Captures are stored directly in the shared allocation, including move-only captures; there is no intermediate std::function allocation.

◆ Subscription() [4/6]

aria::Subscription::Subscription ( std::function< void()> on_disconnect)
inlineexplicit

◆ Subscription() [5/6]

aria::Subscription::Subscription ( const Subscription & )
delete

◆ Subscription() [6/6]

aria::Subscription::Subscription ( Subscription && )
defaultnoexcept

◆ ~Subscription()

aria::Subscription::~Subscription ( )
defaultnoexcept

Member Function Documentation

◆ operator=() [1/2]

Subscription & aria::Subscription::operator= ( const Subscription & )
delete

◆ operator=() [2/2]

Subscription & aria::Subscription::operator= ( Subscription && )
defaultnoexcept

◆ release()

void aria::Subscription::release ( )
inlinenoexcept

Explicitly disconnect now (instead of at destruction).

◆ active()

bool aria::Subscription::active ( ) const
inlinenodiscardnoexcept

◆ operator bool()

aria::Subscription::operator bool ( ) const
inlineexplicitnoexcept

The documentation for this class was generated from the following file: