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.
GHashTable* 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.
volatile 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.
volatile guint trigger_queue_size
Number of entries in trigger queue.
volatile gint terminate
flag to exit, terminate all process-threads
volatile guint idle_thread_cnt
Number of threads waiting for work.
GHashTable* 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.
int initial_processor
Dummy member to make lookups work.
GPtrArray* external_out_ports
An array of pointers to ports that are exposed to the backend and are outputs.

Variable documentation

GHashTable* Graph::graph_nodes

List of all graph nodes (only used for memory management)

key = internal pointer, value = graph node.

GraphNode** Graph::init_trigger_list

Nodes without incoming edges.

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

GHashTable* Graph::setup_graph_nodes

Chain used to setup in the background.

This is applied and cleared by graph_rechain() key = internal pointer, value = graph node.

GPtrArray* Graph::external_out_ports

An array of pointers to ports that are exposed to the backend and are outputs.

Used to clear their buffers when returning early from the processing cycle.