A conditional branch manager is affiliated with an edge's post-vertex. It stores one or more conditions and the edge channels associated with each. A default condition causes the null-channeled outbound edge (or edges) to fire, and until we evaluate expressions, this is the only channel that will actually fire. Statics on the class are used to establish and remove branch constructs in the SOM.Since we do not evaluate expressions, this manager will assume that the first condition and target(s) provisioned are to be the default.
The CountedBranchManager fires one channel a specified number of times, and then fires another channel a specified number of times, etc. It then repeats as necessary. This is useful in looping & branching - the edge firing manager will fire the loopback edge a number of times followed by the shunt or pass-forward edge.
An engine for determining critical paths through a directed acyclic graph (DAG).
A DAGCycleChecker walks a Directed Acyclic Graph, depth-first, looking for cycles, which it detects through the repeated encountering of a given vertex along a given path. After evaluating the DAG, it presents a collection of errors (the Errors field) in the DAG. The errors are instances of DAGStructureError, which implements IModelError, and describes either the first, or all cycles in the network of edges underneath the root edge.
A DAGDeadlockChecker walks a Directed Acyclic Graph, depth-first, looking for deadlocks, which it detects through the repeated encountering of a given vertex along a given path. After evaluating the DAG, it presents a collection of errors (the Errors field) in the DAG. The errors are instances of DAGStructureError, which implements IModelError, and describes either the first, or all deadlocks in the network of edges underneath the root edge.
This is a class that characterizes in an instance of IModelError, a structural error in a DAG.
An edge in a graph is an executional path between two vertices. An edge will have a preVertex and a postVertex, and entail some (possibly zero) duration and procedural implementation between the satisfaction of its preVertex and that of its postVertex.
A Ligature is an edge that connects nodes, but unlike a task, has no duration. It is used only to model dependencies such as when two predecessor tasks must complete before a successor task is allowed to commence - the finish vertices of the two predecessor tasks would be connected to the start vertex of the successor task.
PMData is Post-Mortem data, data that indicates which vertices and edges have fired in a particular graph execution. It does not exist in a non- debug build.
A class that holds a collection of static methods which provide abstraced data about StructureChangeTypes.
Thrown when a UtilityReference is being set, but is already in use. A UtilityReference is a reference that can be used by whomever needs to do so, for short periods. The cloning mechanism, for example, uses it during cloning.
When attached to a vertex in a graph, this object ensures that the vertex does not fire before a specified simulation time.
Implemented by an object that is a participant in a directed graph. Edges may be hierarchical, meaning that an edge may have child edges that are executed as a part of its own execution.
Implemented by an object that is responsible for deciding when to fire one or more of a group of edges. Edge firing managers are typically associated with a vertex, and when the vertex thinks that an edge should be fired (say, because all predecessor edges have completed), it will advise the Edge Firing Manager to fire the appropriate edges.
Summary description for IEdgeReceiptManager.
Implemented by an object that is a part of a graph structure.
Implemented by any edge that modifies the state of its graphContext.
An event that pertains to an edge within an execution (graph) context, therefore usually referring to a dynamic event such as commencement or completion of an edge.
An EdgeExecutionSignaler is called by the code in an edge's application code to signify that it has completed execution.
Implemented by a method that is to contain application code. It is called by the graph when the edge's turn comes to execute application code.
An event that pertains to an edge irrespective of the execution (graph) context, therefore usually referring to a structural occurrence.
Implemented by events that are fired when graph structure changes.