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

A single dependency edge: (upstream source) -> (downstream observer). More...

#include <node.hpp>

Public Attributes

Nodesource = nullptr
 The upstream node being observed.
Nodeobserver = nullptr
 The downstream node that depends on it.
Edgenext_observer = nullptr
 Thread in the source's "observers" list (from the source's point of view: "these are the nodes watching me").
Edgeprev_observer = nullptr
Edgenext_source = nullptr
 Thread in the observer's "sources" list (from the observer's point of view: "these are the nodes I depend on").
Edgeprev_source = nullptr
std::uint64_t observed_version = 0
 Upstream version observed at the moment this edge was established or last confirmed.

Detailed Description

A single dependency edge: (upstream source) -> (downstream observer).

Threaded into two intrusive linked lists so subscribe/unsubscribe are O(1) without heap allocation. Edges are owned by the observer (embedded inline in the Derivation's source-array or allocated from a dedicated pool).

Member Data Documentation

◆ source

Node* aria::reactive::Edge::source = nullptr

The upstream node being observed.

◆ observer

Node* aria::reactive::Edge::observer = nullptr

The downstream node that depends on it.

◆ next_observer

Edge* aria::reactive::Edge::next_observer = nullptr

Thread in the source's "observers" list (from the source's point of view: "these are the nodes watching me").

◆ prev_observer

Edge* aria::reactive::Edge::prev_observer = nullptr

◆ next_source

Edge* aria::reactive::Edge::next_source = nullptr

Thread in the observer's "sources" list (from the observer's point of view: "these are the nodes I depend on").

◆ prev_source

Edge* aria::reactive::Edge::prev_source = nullptr

◆ observed_version

std::uint64_t aria::reactive::Edge::observed_version = 0

Upstream version observed at the moment this edge was established or last confirmed.

On pull, a mismatch with source->version() means the upstream has moved and the observer must recompute.


The documentation for this struct was generated from the following file:
  • modules/core/include/aria/reactive/node.hpp