Documentation ¶
Index ¶
- type Graph
- func (g *Graph) DependOn(statement pipelines.OrderedPipelineStatement) error
- func (g *Graph) Dependencies(child string) NodeSet
- func (g *Graph) Dependents(parent string) NodeSet
- func (g *Graph) DependsOn(child, parent string) bool
- func (g *Graph) HasDependent(parent, child string) bool
- func (g *Graph) Leaves() []string
- func (g *Graph) TopoSorted() []string
- func (g *Graph) TopoSortedLayers() [][]string
- type NodeSet
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Graph ¶
type Graph struct {
// contains filtered or unexported fields
}
func (*Graph) DependOn ¶
func (g *Graph) DependOn(statement pipelines.OrderedPipelineStatement) error
func (*Graph) Dependencies ¶
func (*Graph) Dependents ¶
func (*Graph) HasDependent ¶
func (*Graph) TopoSorted ¶
TopoSorted returns all the nodes in the graph in topological sort order. See also `Graph.TopoSortedLayers()`.
func (*Graph) TopoSortedLayers ¶
TopoSortedLayers returns a slice of all the graph nodes in topological sort order. That is, if `B` depends on `A`, then `A` is guaranteed to come before `B` in the sorted output. The graph is guaranteed to be cycle-free because cycles are detected while building the graph. Additionally, the output is grouped into "layers", which are guaranteed to not have any dependencies within each layer. This is useful, e.g. when building an execution plan for some DAG, in which case each element within each layer could be executed in parallel. If you do not need this layered property, use `Graph.TopoSorted()`, which flattens all elements.