unit
packageThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
Documentation¶
Index¶
- Variables
- type Dependency
- type Edge
- type Graph
- func (g *Graph[EdgeType, VertexType]) AddEdge(from, to VertexType, edge EdgeType) error
- func (g *Graph[EdgeType, VertexType]) GetForwardAdjacentVertices(from VertexType) []Edge[EdgeType, VertexType]
- func (g *Graph[EdgeType, VertexType]) GetReverseAdjacentVertices(to VertexType) []Edge[EdgeType, VertexType]
- func (g *Graph[EdgeType, VertexType]) ToDOT(name string) (string, error)
- type ID
- type Manager
- func (m *Manager) AddDependency(unit ID, dependsOn ID, requiredStatus Status) error
- func (m *Manager) ExportDOT(name string) (string, error)
- func (m *Manager) GetAllDependencies(unit ID) ([]Dependency, error)
- func (m *Manager) GetGraph() *Graph[Status, ID]
- func (m *Manager) GetUnmetDependencies(unit ID) ([]Dependency, error)
- func (m *Manager) IsReady(id ID) (bool, error)
- func (m *Manager) Register(id ID) error
- func (m *Manager) Unit(id ID) (Unit, error)
- func (m *Manager) UpdateStatus(unit ID, newStatus Status) error
- type Status
- type Unit
Constants¶
This section is empty.
Variables¶
var (ErrUnitIDRequired =xerrors.New("unit name is required")ErrUnitNotFound =xerrors.New("unit not found")ErrUnitAlreadyRegistered =xerrors.New("unit already registered")ErrCannotUpdateOtherUnit =xerrors.New("cannot update other unit's status")ErrDependenciesNotSatisfied =xerrors.New("unit dependencies not satisfied")ErrSameStatusAlreadySet =xerrors.New("same status already set")ErrCycleDetected =xerrors.New("cycle detected")ErrFailedToAddDependency =xerrors.New("failed to add dependency"))
Functions¶
This section is empty.
Types¶
typeDependency¶added inv2.29.0
Dependency represents a dependency relationship between units.
typeEdge¶
type Edge[EdgeType, VertexTypecomparable] struct {From VertexTypeTo VertexTypeEdge EdgeType}
Edge is a convenience type for representing an edge in the graph.It encapsulates the from and to vertices and the edge type itself.
typeGraph¶
type Graph[EdgeType, VertexTypecomparable] struct {// contains filtered or unexported fields}
Graph provides a bidirectional interface over gonum's directed graph implementation.While the underlying gonum graph is directed, we overlay bidirectional semanticsby distinguishing between forward and reverse edges. Wanting and being wanted byother units are related but different concepts that have different graph traversalimplications when Units update their status.
The graph stores edge types to represent different relationships between units,allowing for domain-specific semantics beyond simple connectivity.
func (*Graph[EdgeType, VertexType])AddEdge¶
AddEdge adds an edge to the graph. It initializes the graph and metadata on first use,checks for cycles, and adds the edge to the gonum graph.
func (*Graph[EdgeType, VertexType])GetForwardAdjacentVertices¶
func (g *Graph[EdgeType, VertexType]) GetForwardAdjacentVertices(from VertexType) []Edge[EdgeType, VertexType]
GetForwardAdjacentVertices returns all the edges that originate from the given vertex.
func (*Graph[EdgeType, VertexType])GetReverseAdjacentVertices¶
func (g *Graph[EdgeType, VertexType]) GetReverseAdjacentVertices(to VertexType) []Edge[EdgeType, VertexType]
GetReverseAdjacentVertices returns all the edges that terminate at the given vertex.
typeID¶added inv2.29.0
type IDstring
ID provides a type narrowed representation of the unique identifier of a unit.
typeManager¶added inv2.29.0
type Manager struct {// contains filtered or unexported fields}Manager provides reactive dependency tracking over a Graph.It manages Unit registration, dependency relationships, and status updateswith automatic recalculation of readiness when dependencies are satisfied.
func (*Manager)AddDependency¶added inv2.29.0
AddDependency adds a dependency relationship between units.The unit depends on the dependsOn unit reaching the requiredStatus.
func (*Manager)ExportDOT¶added inv2.29.0
ExportDOT exports the dependency graph to DOT format for visualization.
func (*Manager)GetAllDependencies¶added inv2.29.0
func (m *Manager) GetAllDependencies(unitID) ([]Dependency,error)
GetAllDependencies returns all dependencies for a unit, both satisfied and unsatisfied.
func (*Manager)GetGraph¶added inv2.29.0
GetGraph returns the underlying graph for visualization and debugging.This should be used carefully as it exposes the internal graph structure.
func (*Manager)GetUnmetDependencies¶added inv2.29.0
func (m *Manager) GetUnmetDependencies(unitID) ([]Dependency,error)
GetUnmetDependencies returns a list of unsatisfied dependencies for a unit.
func (*Manager)Register¶added inv2.29.0
Register adds a unit to the manager if it is not already registered.If a Unit is already registered (per the ID field), it is not updated.
typeStatus¶added inv2.29.0
type Statusstring
Status represents the status of a unit.
typeUnit¶added inv2.29.0
type Unit struct {// contains filtered or unexported fields}Unit represents a point-in-time snapshot of a vertex in the dependency graph.Units may depend on other units, or be depended on by other units. The unit structis not aware of updates made to the dependency graph after it is initialized and shouldnot be cached.