Graph struct

Graph.

Contents

Public variables

Router* router
Pointer back to router for convenience.
int destroying
Flag to indicate if graph is currently getting destroyed.
GraphNode** graph_nodes
List of all graph nodes (only used for memory management)
GraphNode** init_trigger_list
Nodes without incoming edges.
gint n_terminal_nodes
Number of graph nodes without an outgoing edge.
gint terminal_refcnt
Remaining unprocessed terminal nodes in this cycle.
ZixSem callback_start
Synchronization with main process callback.
ZixSem trigger
Wake up graph node process threads.
MPMCQueue* trigger_queue
Queue containing nodes that can be processed.
guint trigger_queue_size
Number of entries in trigger queue.
gint terminate
flag to exit, terminate all process-threads
guint idle_thread_cnt
Number of threads waiting for work.
GraphNode** setup_graph_nodes
Chain used to setup in the background.
GraphNode** setup_terminal_nodes
Used only when constructing the graph so we can traverse the graph backwards to calculate the playback latencies.

Variable documentation

GraphNode** Graph::init_trigger_list

Nodes without incoming edges.

These run concurrently at the start of each cycle to kick off processing

GraphNode** Graph::setup_graph_nodes

Chain used to setup in the background.

This is applied and cleared by graph_rechain()