Documentation
¶
Index ¶
- Constants
- Variables
- func Hash(values ...interface{}) string
- func NewFilterForEdge(parent Identifier, child Identifier) *filters.Filter
- func SortEdges(edges []*Edge, sortBy string, sortOrder common.SortOrder)
- func SortNodes(nodes []*Node, sortBy string, sortOrder common.SortOrder)
- type Backend
- type CachedBackend
- func (c *CachedBackend) EdgeAdded(e *Edge) error
- func (c *CachedBackend) EdgeDeleted(e *Edge) error
- func (c *CachedBackend) GetEdge(i Identifier, t Context) []*Edge
- func (c *CachedBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) ([]*Node, []*Node)
- func (c *CachedBackend) GetEdges(t Context, m ElementMatcher) []*Edge
- func (c *CachedBackend) GetNode(i Identifier, t Context) []*Node
- func (c *CachedBackend) GetNodeEdges(n *Node, t Context, m ElementMatcher) (edges []*Edge)
- func (c *CachedBackend) GetNodes(t Context, m ElementMatcher) []*Node
- func (c *CachedBackend) IsHistorySupported() bool
- func (c *CachedBackend) MetadataUpdated(i interface{}) error
- func (c *CachedBackend) NodeAdded(n *Node) error
- func (c *CachedBackend) NodeDeleted(n *Node) error
- func (c *CachedBackend) SetMode(mode int)
- type Context
- type DefaultGraphListener
- func (c *DefaultGraphListener) OnEdgeAdded(e *Edge)
- func (c *DefaultGraphListener) OnEdgeDeleted(e *Edge)
- func (c *DefaultGraphListener) OnEdgeUpdated(e *Edge)
- func (c *DefaultGraphListener) OnNodeAdded(n *Node)
- func (c *DefaultGraphListener) OnNodeDeleted(n *Node)
- func (c *DefaultGraphListener) OnNodeUpdated(n *Node)
- type DefaultLinker
- type Edge
- func (e *Edge) GetField(name string) (interface{}, error)
- func (e *Edge) GetFieldInt64(field string) (_ int64, err error)
- func (e *Edge) GetFieldKeys() []string
- func (e *Edge) GetFieldString(field string) (_ string, err error)
- func (e *Edge) GetFieldStringList(name string) ([]string, error)
- func (e *Edge) MatchMetadata(f ElementMatcher) bool
- func (e *Edge) String() string
- func (e *Edge) UnmarshalJSON(b []byte) error
- type EdgePartiallyUpdated
- type ElasticSearchBackend
- func (b *ElasticSearchBackend) EdgeAdded(e *Edge) error
- func (b *ElasticSearchBackend) EdgeDeleted(e *Edge) error
- func (b *ElasticSearchBackend) GetEdge(i Identifier, t Context) []*Edge
- func (b *ElasticSearchBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) (parents []*Node, children []*Node)
- func (b *ElasticSearchBackend) GetEdges(t Context, m ElementMatcher) []*Edge
- func (b *ElasticSearchBackend) GetNode(i Identifier, t Context) []*Node
- func (b *ElasticSearchBackend) GetNodeEdges(n *Node, t Context, m ElementMatcher) (edges []*Edge)
- func (b *ElasticSearchBackend) GetNodes(t Context, m ElementMatcher) []*Node
- func (b *ElasticSearchBackend) IsHistorySupported() bool
- func (b *ElasticSearchBackend) MetadataUpdated(i interface{}) error
- func (b *ElasticSearchBackend) NodeAdded(n *Node) error
- func (b *ElasticSearchBackend) NodeDeleted(n *Node) error
- func (b *ElasticSearchBackend) OnStarted()
- func (b *ElasticSearchBackend) Query(typ string, tsq *TimedSearchQuery) (sr *elastic.SearchResult, _ error)
- type ElementFilter
- type ElementMatcher
- type Elements
- type EventHandler
- type EventListener
- type Graph
- func (g *Graph) AddEdge(e *Edge) error
- func (g *Graph) AddEventListener(l EventListener)
- func (g *Graph) AddMetadata(i interface{}, k string, v interface{}) error
- func (g *Graph) AddNode(n *Node) error
- func (g *Graph) AreLinked(n1 *Node, n2 *Node, m ElementMatcher) bool
- func (g *Graph) CloneWithContext(context Context) (*Graph, error)
- func (g *Graph) CreateEdge(i Identifier, p *Node, c *Node, m Metadata, t Time, h ...string) *Edge
- func (g *Graph) CreateNode(i Identifier, m Metadata, t Time, h ...string) *Node
- func (g *Graph) DelEdge(e *Edge) error
- func (g *Graph) DelMetadata(i interface{}, k string) error
- func (g *Graph) DelNode(n *Node) error
- func (g *Graph) DelNodes(m ElementMatcher) error
- func (g *Graph) Diff(newGraph *Graph) (addedNodes []*Node, removedNodes []*Node, addedEdges []*Edge, ...)
- func (g *Graph) EdgeAdded(e *Edge) error
- func (g *Graph) EdgeDeleted(e *Edge) error
- func (g *Graph) EdgeUpdated(e *Edge) error
- func (g *Graph) Elements() *Elements
- func (g *Graph) GetContext() Context
- func (g *Graph) GetEdge(i Identifier) *Edge
- func (g *Graph) GetEdgeNodes(e *Edge, parentMetadata, childMetadata ElementMatcher) ([]*Node, []*Node)
- func (g *Graph) GetEdges(m ElementMatcher) []*Edge
- func (g *Graph) GetFirstLink(parent, child *Node, metadata Metadata) *Edge
- func (g *Graph) GetHost() string
- func (g *Graph) GetNode(i Identifier) *Node
- func (g *Graph) GetNodeEdges(n *Node, m ElementMatcher) []*Edge
- func (g *Graph) GetNodes(m ElementMatcher) []*Node
- func (g *Graph) GetNodesMap(t Context) map[Identifier]*Node
- func (g *Graph) Link(n1 *Node, n2 *Node, m Metadata, h ...string) (*Edge, error)
- func (g *Graph) LookupChildren(n *Node, f ElementMatcher, em ElementMatcher) (nodes []*Node)
- func (g *Graph) LookupFirstChild(n *Node, f ElementMatcher) *Node
- func (g *Graph) LookupFirstNode(m ElementMatcher) *Node
- func (g *Graph) LookupParents(n *Node, f ElementMatcher, em ElementMatcher) (nodes []*Node)
- func (g *Graph) LookupShortestPath(n *Node, m ElementMatcher, em ElementMatcher) []*Node
- func (g *Graph) MarshalJSON() ([]byte, error)
- func (g *Graph) NewEdge(i Identifier, p *Node, c *Node, m Metadata, h ...string) (*Edge, error)
- func (g *Graph) NewNode(i Identifier, m Metadata, h ...string) (*Node, error)
- func (g *Graph) NodeAdded(n *Node) error
- func (g *Graph) NodeDeleted(n *Node) error
- func (g *Graph) NodeUpdated(n *Node) error
- func (g *Graph) Origin() string
- func (g *Graph) RemoveEventListener(l EventListener)
- func (g *Graph) SetMetadata(i interface{}, m Metadata) error
- func (g *Graph) StartMetadataTransaction(i interface{}) *MetadataTransaction
- func (g *Graph) String() string
- func (g *Graph) Unlink(n1 *Node, n2 *Node) error
- type Identifier
- type Indexer
- func (i *Indexer) AddEventListener(l EventListener)
- func (i *Indexer) FromHash(hash string) (nodes []*Node, values []interface{})
- func (i *Indexer) Get(values ...interface{}) ([]*Node, []interface{})
- func (i *Indexer) GetNode(values ...interface{}) (*Node, interface{})
- func (i *Indexer) Index(id Identifier, n *Node, kv map[string]interface{})
- func (i *Indexer) OnNodeAdded(n *Node)
- func (i *Indexer) OnNodeDeleted(n *Node)
- func (i *Indexer) OnNodeUpdated(n *Node)
- func (i *Indexer) RemoveEventListener(l EventListener)
- func (i *Indexer) Start()
- func (i *Indexer) Stop()
- func (i *Indexer) Unindex(id Identifier, n *Node)
- type Linker
- type LinkerEventListener
- type ListenerHandler
- type MemoryBackend
- func (m *MemoryBackend) EdgeAdded(e *Edge) error
- func (m *MemoryBackend) EdgeDeleted(e *Edge) error
- func (m *MemoryBackend) GetEdge(i Identifier, t Context) []*Edge
- func (m *MemoryBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) ([]*Node, []*Node)
- func (m MemoryBackend) GetEdges(t Context, metadata ElementMatcher) (edges []*Edge)
- func (m *MemoryBackend) GetNode(i Identifier, t Context) []*Node
- func (m *MemoryBackend) GetNodeEdges(n *Node, t Context, meta ElementMatcher) []*Edge
- func (m MemoryBackend) GetNodes(t Context, metadata ElementMatcher) (nodes []*Node)
- func (m *MemoryBackend) IsHistorySupported() bool
- func (m *MemoryBackend) MetadataUpdated(i interface{}) error
- func (m *MemoryBackend) NodeAdded(n *Node) error
- func (m *MemoryBackend) NodeDeleted(n *Node) error
- type MemoryBackendEdge
- type MemoryBackendNode
- func (e MemoryBackendNode) GetField(name string) (interface{}, error)
- func (e MemoryBackendNode) GetFieldInt64(field string) (_ int64, err error)
- func (e MemoryBackendNode) GetFieldKeys() []string
- func (e MemoryBackendNode) GetFieldString(field string) (_ string, err error)
- func (e MemoryBackendNode) GetFieldStringList(name string) ([]string, error)
- func (e MemoryBackendNode) MatchMetadata(f ElementMatcher) bool
- type Metadata
- type MetadataDecoder
- type MetadataIndexer
- type MetadataIndexerLinker
- type MetadataTransaction
- type Node
- func (e *Node) GetField(name string) (interface{}, error)
- func (e *Node) GetFieldInt64(field string) (_ int64, err error)
- func (e *Node) GetFieldKeys() []string
- func (e *Node) GetFieldString(field string) (_ string, err error)
- func (e *Node) GetFieldStringList(name string) ([]string, error)
- func (e *Node) MatchMetadata(f ElementMatcher) bool
- func (n *Node) String() string
- func (n *Node) UnmarshalJSON(b []byte) error
- type NodeAction
- type NodeHasher
- type NodePartiallyUpdated
- type OrientDBBackend
- func (o *OrientDBBackend) EdgeAdded(e *Edge) error
- func (o *OrientDBBackend) EdgeDeleted(e *Edge) error
- func (o *OrientDBBackend) GetEdge(i Identifier, t Context) []*Edge
- func (o *OrientDBBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) (parents []*Node, children []*Node)
- func (o *OrientDBBackend) GetEdges(t Context, m ElementMatcher) (edges []*Edge)
- func (o *OrientDBBackend) GetNode(i Identifier, t Context) (nodes []*Node)
- func (o *OrientDBBackend) GetNodeEdges(n *Node, t Context, m ElementMatcher) (edges []*Edge)
- func (o *OrientDBBackend) GetNodes(t Context, m ElementMatcher) (nodes []*Node)
- func (o *OrientDBBackend) IsHistorySupported() bool
- func (o *OrientDBBackend) MetadataUpdated(i interface{}) error
- func (o *OrientDBBackend) NodeAdded(n *Node) error
- func (o *OrientDBBackend) NodeDeleted(n *Node) error
- func (o *OrientDBBackend) OnStarted()
- type PartiallyUpdatedOp
- type PartiallyUpdatedOpType
- type Processor
- func (processor *Processor) Cancel(values ...interface{})
- func (processor *Processor) DoAction(action NodeAction, values ...interface{})
- func (processor *Processor) OnNodeAdded(n *Node)
- func (processor *Processor) OnNodeUpdated(n *Node)
- func (processor *Processor) Start()
- func (processor *Processor) Stop()
- type ResourceLinker
- type Time
- type TimedSearchQuery
Constants ¶
Define the running cache mode, memory and/or persistent
const ( NodeUpdated graphEventType = iota + 1 NodeAdded NodeDeleted EdgeUpdated EdgeAdded EdgeDeleted )
Graph events
Sort criterias
Variables ¶
var ( ErrElementNotFound = errors.New("Graph element not found") ErrNodeNotFound = errors.New("Node not found") ErrEdgeNotFound = errors.New("Edge not found") ErrParentNotFound = errors.New("Parent node not found") ErrChildNotFound = errors.New("Child node not found") ErrEdgeConflict = errors.New("Edge ID conflict") ErrNodeConflict = errors.New("Node ID conflict") ErrInternal = errors.New("Internal backend error") )
Graph errors
var ( // NodeMetadataDecoders is a map that owns special type metadata decoder NodeMetadataDecoders = make(map[string]MetadataDecoder) // EdgeMetadataDecoders is a map that owns special type metadata decoder EdgeMetadataDecoders = make(map[string]MetadataDecoder) )
Cachebackend graph errors
Functions ¶
func NewFilterForEdge ¶
func NewFilterForEdge(parent Identifier, child Identifier) *filters.Filter
NewFilterForEdge creates a filter based on parent or child
func SortEdges ¶
SortEdges sorts a set of edges
Types ¶
type Backend ¶
type Backend interface {
NodeAdded(n *Node) error
NodeDeleted(n *Node) error
GetNode(i Identifier, at Context) []*Node
GetNodeEdges(n *Node, at Context, m ElementMatcher) []*Edge
EdgeAdded(e *Edge) error
EdgeDeleted(e *Edge) error
GetEdge(i Identifier, at Context) []*Edge
GetEdgeNodes(e *Edge, at Context, parentMetadata, childMetadata ElementMatcher) ([]*Node, []*Node)
MetadataUpdated(e interface{}) error
GetNodes(t Context, m ElementMatcher) []*Node
GetEdges(t Context, m ElementMatcher) []*Edge
IsHistorySupported() bool
}
Backend interface mechanism used as storage
type CachedBackend ¶
type CachedBackend struct {
// contains filtered or unexported fields
}
CachedBackend describes a cache mechanism in memory and/or persistent database
func NewCachedBackend ¶
func NewCachedBackend(persistent Backend) (*CachedBackend, error)
NewCachedBackend creates new graph cache mechanism
func (*CachedBackend) EdgeAdded ¶
func (c *CachedBackend) EdgeAdded(e *Edge) error
EdgeAdded add an edge in the cache
func (*CachedBackend) EdgeDeleted ¶
func (c *CachedBackend) EdgeDeleted(e *Edge) error
EdgeDeleted delete an edge in the cache
func (*CachedBackend) GetEdge ¶
func (c *CachedBackend) GetEdge(i Identifier, t Context) []*Edge
GetEdge retrieve an edge within a time slice
func (*CachedBackend) GetEdgeNodes ¶
func (c *CachedBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) ([]*Node, []*Node)
GetEdgeNodes retrieve a list of nodes from an edge within a time slice, matching metadata
func (*CachedBackend) GetEdges ¶
func (c *CachedBackend) GetEdges(t Context, m ElementMatcher) []*Edge
GetEdges returns a list of edges with a time slice, matching metadata
func (*CachedBackend) GetNode ¶
func (c *CachedBackend) GetNode(i Identifier, t Context) []*Node
GetNode retrieve a node from the cache within a time slice
func (*CachedBackend) GetNodeEdges ¶
func (c *CachedBackend) GetNodeEdges(n *Node, t Context, m ElementMatcher) (edges []*Edge)
GetNodeEdges retrieve a list of edges from a node within a time slice, matching metadata
func (*CachedBackend) GetNodes ¶
func (c *CachedBackend) GetNodes(t Context, m ElementMatcher) []*Node
GetNodes returns a list of nodes with a time slice, matching metadata
func (*CachedBackend) IsHistorySupported ¶
func (c *CachedBackend) IsHistorySupported() bool
IsHistorySupported returns whether the persistent backend supports history
func (*CachedBackend) MetadataUpdated ¶
func (c *CachedBackend) MetadataUpdated(i interface{}) error
MetadataUpdated updates metadata
func (*CachedBackend) NodeAdded ¶
func (c *CachedBackend) NodeAdded(n *Node) error
NodeAdded same the node in the cache
func (*CachedBackend) NodeDeleted ¶
func (c *CachedBackend) NodeDeleted(n *Node) error
NodeDeleted Delete the node in the cache
type Context ¶
Context describes within time slice
type DefaultGraphListener ¶
type DefaultGraphListener struct {
}
DefaultGraphListener default implementation of a graph listener, can be used when not implementing the whole set of callbacks
func (*DefaultGraphListener) OnEdgeAdded ¶
func (c *DefaultGraphListener) OnEdgeAdded(e *Edge)
OnEdgeAdded event
func (*DefaultGraphListener) OnEdgeDeleted ¶
func (c *DefaultGraphListener) OnEdgeDeleted(e *Edge)
OnEdgeDeleted event
func (*DefaultGraphListener) OnEdgeUpdated ¶
func (c *DefaultGraphListener) OnEdgeUpdated(e *Edge)
OnEdgeUpdated event
func (*DefaultGraphListener) OnNodeAdded ¶
func (c *DefaultGraphListener) OnNodeAdded(n *Node)
OnNodeAdded event
func (*DefaultGraphListener) OnNodeDeleted ¶
func (c *DefaultGraphListener) OnNodeDeleted(n *Node)
OnNodeDeleted event
func (*DefaultGraphListener) OnNodeUpdated ¶
func (c *DefaultGraphListener) OnNodeUpdated(n *Node)
OnNodeUpdated event
type DefaultLinker ¶
type DefaultLinker struct {
}
DefaultLinker returns a linker that does nothing
func (*DefaultLinker) GetABLinks ¶
func (dl *DefaultLinker) GetABLinks(node *Node) []*Edge
GetABLinks returns all the outgoing links for a node
func (*DefaultLinker) GetBALinks ¶
func (dl *DefaultLinker) GetBALinks(node *Node) []*Edge
GetBALinks returns all the incoming links for a node
type Edge ¶
type Edge struct {
Parent Identifier
Child Identifier
// contains filtered or unexported fields
}
Edge of the graph linked by a parent and a child
func CreateEdge ¶
func CreateEdge(i Identifier, p *Node, c *Node, m Metadata, t Time, h string, s common.ServiceType) *Edge
CreateEdge returns a new edge not bound to any graph
func (*Edge) GetField ¶
GetField returns the associated field name
func (*Edge) GetFieldStringList ¶
GetFieldStringList returns a list a string for the given field name
func (*Edge) MatchMetadata ¶
func (e *Edge) MatchMetadata(f ElementMatcher) bool
MatchMetadata returns when an edge matches a specified filter or metadata
type EdgePartiallyUpdated ¶ added in v0.23.0
type EdgePartiallyUpdated struct {
Edge *Edge
Ops []PartiallyUpdatedOp
}
EdgePartiallyUpdated partial updates of a edge
type ElasticSearchBackend ¶
type ElasticSearchBackend struct {
Backend
// contains filtered or unexported fields
}
ElasticSearchBackend describes a persistent backend based on ElasticSearch
func NewElasticSearchBackendFromClient ¶
func NewElasticSearchBackendFromClient(client es.ClientInterface, electionService common.MasterElectionService) (*ElasticSearchBackend, error)
NewElasticSearchBackendFromClient creates a new graph backend using the given elasticsearch client connection
func NewElasticSearchBackendFromConfig ¶
func NewElasticSearchBackendFromConfig(cfg es.Config, electionService common.MasterElectionService) (*ElasticSearchBackend, error)
NewElasticSearchBackendFromConfig creates a new graph backend from an ES configuration structure
func (*ElasticSearchBackend) EdgeAdded ¶
func (b *ElasticSearchBackend) EdgeAdded(e *Edge) error
EdgeAdded add an edge in the database
func (*ElasticSearchBackend) EdgeDeleted ¶
func (b *ElasticSearchBackend) EdgeDeleted(e *Edge) error
EdgeDeleted delete an edge in the database
func (*ElasticSearchBackend) GetEdge ¶
func (b *ElasticSearchBackend) GetEdge(i Identifier, t Context) []*Edge
GetEdge get an edge within a time slice
func (*ElasticSearchBackend) GetEdgeNodes ¶
func (b *ElasticSearchBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) (parents []*Node, children []*Node)
GetEdgeNodes returns the parents and child nodes of an edge within time slice, matching metadatas
func (*ElasticSearchBackend) GetEdges ¶
func (b *ElasticSearchBackend) GetEdges(t Context, m ElementMatcher) []*Edge
GetEdges returns a list of edges within time slice, matching metadata
func (*ElasticSearchBackend) GetNode ¶
func (b *ElasticSearchBackend) GetNode(i Identifier, t Context) []*Node
GetNode get a node within a time slice
func (*ElasticSearchBackend) GetNodeEdges ¶
func (b *ElasticSearchBackend) GetNodeEdges(n *Node, t Context, m ElementMatcher) (edges []*Edge)
GetNodeEdges returns a list of a node edges within time slice
func (*ElasticSearchBackend) GetNodes ¶
func (b *ElasticSearchBackend) GetNodes(t Context, m ElementMatcher) []*Node
GetNodes returns a list of nodes within time slice, matching metadata
func (*ElasticSearchBackend) IsHistorySupported ¶
func (b *ElasticSearchBackend) IsHistorySupported() bool
IsHistorySupported returns that this backend does support history
func (*ElasticSearchBackend) MetadataUpdated ¶
func (b *ElasticSearchBackend) MetadataUpdated(i interface{}) error
MetadataUpdated updates a node metadata in the database
func (*ElasticSearchBackend) NodeAdded ¶
func (b *ElasticSearchBackend) NodeAdded(n *Node) error
NodeAdded add a node
func (*ElasticSearchBackend) NodeDeleted ¶
func (b *ElasticSearchBackend) NodeDeleted(n *Node) error
NodeDeleted delete a node
func (*ElasticSearchBackend) OnStarted ¶
func (b *ElasticSearchBackend) OnStarted()
OnStarted implements storage client listener interface
func (*ElasticSearchBackend) Query ¶
func (b *ElasticSearchBackend) Query(typ string, tsq *TimedSearchQuery) (sr *elastic.SearchResult, _ error)
Query the database for a "node" or "edge"
type ElementFilter ¶
type ElementFilter struct {
// contains filtered or unexported fields
}
ElementFilter implements ElementMatcher interface based on filter
func NewElementFilter ¶
func NewElementFilter(f *filters.Filter) *ElementFilter
NewElementFilter returns a new ElementFilter
func (*ElementFilter) Filter ¶
func (mf *ElementFilter) Filter() (*filters.Filter, error)
Filter returns the filter
func (*ElementFilter) Match ¶
func (mf *ElementFilter) Match(g common.Getter) bool
Match returns true if the given element matches the filter.
type ElementMatcher ¶
ElementMatcher defines an interface used to match an element
type Elements ¶
Elements struct containing nodes and edges
type EventHandler ¶
EventHandler describes an object that notifies listeners with graph events
func NewEventHandler ¶
func NewEventHandler(maxEvents int) *EventHandler
NewEventHandler instanciate a new event handler
func (*EventHandler) AddEventListener ¶
func (g *EventHandler) AddEventListener(l EventListener)
AddEventListener subscribe a new graph listener
func (*EventHandler) NotifyEvent ¶
func (g *EventHandler) NotifyEvent(kind graphEventType, element interface{})
NotifyEvent notifies all the listeners of an event. NotifyEvent makes sure that we don't enter a notify endless loop.
func (*EventHandler) RemoveEventListener ¶
func (g *EventHandler) RemoveEventListener(l EventListener)
RemoveEventListener unsubscribe a graph listener
type EventListener ¶
type EventListener interface {
OnNodeUpdated(n *Node)
OnNodeAdded(n *Node)
OnNodeDeleted(n *Node)
OnEdgeUpdated(e *Edge)
OnEdgeAdded(e *Edge)
OnEdgeDeleted(e *Edge)
}
EventListener describes the graph events interface mechanism
type Graph ¶
Graph describes the graph object based on events and context mechanism An associated backend is used as storage
func NewGraph ¶
func NewGraph(host string, backend Backend, service common.ServiceType) *Graph
NewGraph creates a new graph based on the backend
func (*Graph) AddEventListener ¶
func (g *Graph) AddEventListener(l EventListener)
AddEventListener subscibe a new graph listener
func (*Graph) AddMetadata ¶
AddMetadata add a metadata to an associated edge or node
func (*Graph) AreLinked ¶
func (g *Graph) AreLinked(n1 *Node, n2 *Node, m ElementMatcher) bool
AreLinked returns true if nodes n1, n2 are linked
func (*Graph) CloneWithContext ¶
CloneWithContext creates a new graph based on the given one and the given context
func (*Graph) CreateEdge ¶
CreateEdge creates a new edge and adds it to the graph
func (*Graph) CreateNode ¶
CreateNode creates a new node and adds it to the graph
func (*Graph) DelMetadata ¶
DelMetadata delete a metadata to an associated edge or node
func (*Graph) DelNode ¶
DelNode delete the node n in the graph
func (*Graph) DelNodes ¶
func (g *Graph) DelNodes(m ElementMatcher) error
DelNodes deletes nodes for given matcher
func (*Graph) Diff ¶
func (g *Graph) Diff(newGraph *Graph) (addedNodes []*Node, removedNodes []*Node, addedEdges []*Edge, removedEdges []*Edge)
Diff computes the difference between two graphs
func (*Graph) GetContext ¶
GetContext returns the current context
func (*Graph) GetEdgeNodes ¶
func (g *Graph) GetEdgeNodes(e *Edge, parentMetadata, childMetadata ElementMatcher) ([]*Node, []*Node)
GetEdgeNodes returns a list of nodes of an edge
func (*Graph) GetEdges ¶
func (g *Graph) GetEdges(m ElementMatcher) []*Edge
GetEdges returns a list of edges
func (*Graph) GetFirstLink ¶
GetFirstLink get Link between the parent and the child node
func (*Graph) GetNodeEdges ¶
func (g *Graph) GetNodeEdges(n *Node, m ElementMatcher) []*Edge
GetNodeEdges returns a list of edges of a node
func (*Graph) GetNodes ¶
func (g *Graph) GetNodes(m ElementMatcher) []*Node
GetNodes returns a list of nodes
func (*Graph) GetNodesMap ¶
func (g *Graph) GetNodesMap(t Context) map[Identifier]*Node
GetNodesMap returns a map of nodes within a time slice
func (*Graph) Link ¶
Link the nodes n1, n2 with a new edge
func (*Graph) LookupChildren ¶
func (g *Graph) LookupChildren(n *Node, f ElementMatcher, em ElementMatcher) (nodes []*Node)
LookupChildren returns a list of children nodes
func (*Graph) LookupFirstChild ¶
func (g *Graph) LookupFirstChild(n *Node, f ElementMatcher) *Node
LookupFirstChild returns the child
func (*Graph) LookupFirstNode ¶
func (g *Graph) LookupFirstNode(m ElementMatcher) *Node
LookupFirstNode returns the fist node matching metadata
func (*Graph) LookupParents ¶
func (g *Graph) LookupParents(n *Node, f ElementMatcher, em ElementMatcher) (nodes []*Node)
LookupParents returns the associated parents edge of a node
func (*Graph) LookupShortestPath ¶
func (g *Graph) LookupShortestPath(n *Node, m ElementMatcher, em ElementMatcher) []*Node
LookupShortestPath based on Dijkstra algorithm
func (*Graph) MarshalJSON ¶
MarshalJSON serialize the graph in JSON
func (*Graph) NewEdge ¶
NewEdge creates a new edge in the graph based on Identifier, parent, child nodes and metadata
func (*Graph) NewNode ¶
NewNode creates a new node in the graph with attached metadata
func (*Graph) RemoveEventListener ¶
func (g *Graph) RemoveEventListener(l EventListener)
RemoveEventListener unsubscribe a graph listener
func (*Graph) SetMetadata ¶
SetMetadata associate metadata to an edge or node
func (*Graph) StartMetadataTransaction ¶
func (g *Graph) StartMetadataTransaction(i interface{}) *MetadataTransaction
StartMetadataTransaction start a new transaction
type Indexer ¶
type Indexer struct {
common.RWMutex
DefaultGraphListener
// contains filtered or unexported fields
}
Indexer provides a way to index graph nodes. A node can be mapped to multiple hash,value pairs. A hash can also be mapped to multiple nodes.
func NewIndexer ¶
func NewIndexer(g *Graph, listenerHandler ListenerHandler, hashNode NodeHasher, appendOnly bool) *Indexer
NewIndexer returns a new graph indexer with the associated hashing callback
func (*Indexer) AddEventListener ¶
func (i *Indexer) AddEventListener(l EventListener)
AddEventListener subscribes a new graph listener
func (*Indexer) FromHash ¶
FromHash returns the nodes mapped by a hash along with their associated values
func (*Indexer) Get ¶
Get computes the hash of the passed parameters and returns the matching nodes with their respective value
func (*Indexer) GetNode ¶ added in v0.23.0
GetNode computes the hash of the passed parameters and returns the first matching node with its respective value
func (*Indexer) Index ¶ added in v0.23.0
func (i *Indexer) Index(id Identifier, n *Node, kv map[string]interface{})
Index indexes a node with a set of hash -> value map
func (*Indexer) RemoveEventListener ¶
func (i *Indexer) RemoveEventListener(l EventListener)
RemoveEventListener unsubscribe a graph listener
func (*Indexer) Start ¶
func (i *Indexer) Start()
Start registers the graph indexer as a graph listener
func (*Indexer) Stop ¶
func (i *Indexer) Stop()
Stop removes the graph indexer from the graph listeners
func (*Indexer) Unindex ¶ added in v0.23.0
func (i *Indexer) Unindex(id Identifier, n *Node)
Unindex removes the node and its associated hashes from the index
type Linker ¶
Linker describes an object that returns incoming edges to a node and outgoing edges from that node
type LinkerEventListener ¶
type LinkerEventListener interface {
OnError(err error)
}
LinkerEventListener defines the event interface for linker
type ListenerHandler ¶
type ListenerHandler interface {
AddEventListener(l EventListener)
RemoveEventListener(l EventListener)
}
ListenerHandler describes an other that manages a set of event listeners
type MemoryBackend ¶
type MemoryBackend struct {
Backend
// contains filtered or unexported fields
}
MemoryBackend describes the memory backend
func NewMemoryBackend ¶
func NewMemoryBackend() (*MemoryBackend, error)
NewMemoryBackend creates a new graph memory backend
func (*MemoryBackend) EdgeAdded ¶
func (m *MemoryBackend) EdgeAdded(e *Edge) error
EdgeAdded event add an edge in the memory backend
func (*MemoryBackend) EdgeDeleted ¶
func (m *MemoryBackend) EdgeDeleted(e *Edge) error
EdgeDeleted in the graph backend
func (*MemoryBackend) GetEdge ¶
func (m *MemoryBackend) GetEdge(i Identifier, t Context) []*Edge
GetEdge in the graph backend
func (*MemoryBackend) GetEdgeNodes ¶
func (m *MemoryBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) ([]*Node, []*Node)
GetEdgeNodes returns a list of nodes of an edge
func (MemoryBackend) GetEdges ¶
func (m MemoryBackend) GetEdges(t Context, metadata ElementMatcher) (edges []*Edge)
GetEdges from the graph backend
func (*MemoryBackend) GetNode ¶
func (m *MemoryBackend) GetNode(i Identifier, t Context) []*Node
GetNode from the graph backend
func (*MemoryBackend) GetNodeEdges ¶
func (m *MemoryBackend) GetNodeEdges(n *Node, t Context, meta ElementMatcher) []*Edge
GetNodeEdges returns a list of edges of a node
func (MemoryBackend) GetNodes ¶
func (m MemoryBackend) GetNodes(t Context, metadata ElementMatcher) (nodes []*Node)
GetNodes from the graph backend
func (*MemoryBackend) IsHistorySupported ¶
func (m *MemoryBackend) IsHistorySupported() bool
IsHistorySupported returns that this backend doesn't support history
func (*MemoryBackend) MetadataUpdated ¶
func (m *MemoryBackend) MetadataUpdated(i interface{}) error
MetadataUpdated return true
func (*MemoryBackend) NodeAdded ¶
func (m *MemoryBackend) NodeAdded(n *Node) error
NodeAdded in the graph backend
func (*MemoryBackend) NodeDeleted ¶
func (m *MemoryBackend) NodeDeleted(n *Node) error
NodeDeleted in the graph backend
type MemoryBackendEdge ¶
type MemoryBackendEdge struct {
*Edge
}
MemoryBackendEdge a memory backend edge
func (MemoryBackendEdge) GetFieldInt64 ¶
func (MemoryBackendEdge) GetFieldString ¶
type MemoryBackendNode ¶
type MemoryBackendNode struct {
*Node
// contains filtered or unexported fields
}
MemoryBackendNode a memory backend node
func (MemoryBackendNode) GetField ¶
func (MemoryBackendNode) GetFieldInt64 ¶
func (MemoryBackendNode) GetFieldString ¶
func (MemoryBackendNode) GetFieldStringList ¶
GetFieldStringList returns a list a string for the given field name
func (MemoryBackendNode) MatchMetadata ¶
func (e MemoryBackendNode) MatchMetadata(f ElementMatcher) bool
MatchMetadata returns whether a graph element matches with the provided filter or metadata
type Metadata ¶
type Metadata map[string]interface{}
Metadata describes the graph node metadata type. It implements ElementMatcher based only on Metadata. easyjson:json
func (Metadata) Filter ¶
Filter returns a filter corresponding to the metadata
func (Metadata) Match ¶
Match returns true if the the given element matches the metadata.
func (*Metadata) SetField ¶
SetField set metadata value based on dot key ("a.b.c.d" = "ok")
func (*Metadata) SetFieldAndNormalize ¶
SetFieldAndNormalize set metadata value after normalization (and deepcopy)
type MetadataDecoder ¶
type MetadataDecoder func(raw json.RawMessage) (common.Getter, error)
MetadataDecoder defines a json rawmessage decoder which has to return a object implementing the getter interface
type MetadataIndexer ¶
type MetadataIndexer struct {
*Indexer
// contains filtered or unexported fields
}
MetadataIndexer describes a metadata based graph indexer
func NewMetadataIndexer ¶
func NewMetadataIndexer(g *Graph, listenerHandler ListenerHandler, m ElementMatcher, indexes ...string) (indexer *MetadataIndexer)
NewMetadataIndexer returns a new metadata graph indexer for the nodes matching the graph filter `m`, indexing the metadata with `indexes`
type MetadataIndexerLinker ¶
type MetadataIndexerLinker struct {
*ResourceLinker
// contains filtered or unexported fields
}
MetadataIndexerLinker describes an object that links resources from one indexer to resources from an other indexer.
func NewMetadataIndexerLinker ¶
func NewMetadataIndexerLinker(g *Graph, indexer1, indexer2 *MetadataIndexer, edgeMetadata Metadata) *MetadataIndexerLinker
NewMetadataIndexerLinker returns a new metadata based linker
func (*MetadataIndexerLinker) GetABLinks ¶
func (mil *MetadataIndexerLinker) GetABLinks(node *Node) (edges []*Edge)
GetABLinks returns all the outgoing links for a node
func (*MetadataIndexerLinker) GetBALinks ¶
func (mil *MetadataIndexerLinker) GetBALinks(node *Node) (edges []*Edge)
GetBALinks returns all the incoming links for a node
type MetadataTransaction ¶
type MetadataTransaction struct {
// contains filtered or unexported fields
}
MetadataTransaction describes a metadata transaction in the graph
func (*MetadataTransaction) AddMetadata ¶
func (t *MetadataTransaction) AddMetadata(k string, v interface{})
AddMetadata in the current transaction
func (*MetadataTransaction) Commit ¶
func (t *MetadataTransaction) Commit() error
Commit the current transaction to the graph
func (*MetadataTransaction) DelMetadata ¶
func (t *MetadataTransaction) DelMetadata(k string)
DelMetadata in the current transaction
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
Node of the graph
func CreateNode ¶
func CreateNode(i Identifier, m Metadata, t Time, h string, s common.ServiceType) *Node
CreateNode returns a new node not bound to a graph
func (*Node) GetFieldStringList ¶
GetFieldStringList returns a list a string for the given field name
func (*Node) MatchMetadata ¶
func (e *Node) MatchMetadata(f ElementMatcher) bool
MatchMetadata returns whether a graph element matches with the provided filter or metadata
type NodeAction ¶
NodeAction is a callback to perform on a node. The action is kept active as long as it returns true.
type NodeHasher ¶
NodeHasher describes a callback that is called to map a node to a set of hash,value pairs
type NodePartiallyUpdated ¶ added in v0.23.0
type NodePartiallyUpdated struct {
Node *Node
Ops []PartiallyUpdatedOp
}
NodePartiallyUpdated partial updates of a node
type OrientDBBackend ¶
type OrientDBBackend struct {
Backend
// contains filtered or unexported fields
}
OrientDBBackend describes an OrientDB backend
func NewOrientDBBackend ¶
func NewOrientDBBackend(addr string, database string, username string, password string, electionService common.MasterElectionService) (*OrientDBBackend, error)
NewOrientDBBackend creates a new graph backend and connect to an OrientDB instance
func (*OrientDBBackend) EdgeAdded ¶
func (o *OrientDBBackend) EdgeAdded(e *Edge) error
EdgeAdded add a node in the database
func (*OrientDBBackend) EdgeDeleted ¶
func (o *OrientDBBackend) EdgeDeleted(e *Edge) error
EdgeDeleted delete a node in the database
func (*OrientDBBackend) GetEdge ¶
func (o *OrientDBBackend) GetEdge(i Identifier, t Context) []*Edge
GetEdge get an edge within a time slice
func (*OrientDBBackend) GetEdgeNodes ¶
func (o *OrientDBBackend) GetEdgeNodes(e *Edge, t Context, parentMetadata, childMetadata ElementMatcher) (parents []*Node, children []*Node)
GetEdgeNodes returns the parents and child nodes of an edge within time slice, matching metadata
func (*OrientDBBackend) GetEdges ¶
func (o *OrientDBBackend) GetEdges(t Context, m ElementMatcher) (edges []*Edge)
GetEdges returns a list of edges within time slice, matching metadata
func (*OrientDBBackend) GetNode ¶
func (o *OrientDBBackend) GetNode(i Identifier, t Context) (nodes []*Node)
GetNode get a node within a time slice
func (*OrientDBBackend) GetNodeEdges ¶
func (o *OrientDBBackend) GetNodeEdges(n *Node, t Context, m ElementMatcher) (edges []*Edge)
GetNodeEdges returns a list of a node edges within time slice
func (*OrientDBBackend) GetNodes ¶
func (o *OrientDBBackend) GetNodes(t Context, m ElementMatcher) (nodes []*Node)
GetNodes returns a list of nodes within time slice, matching metadata
func (*OrientDBBackend) IsHistorySupported ¶
func (o *OrientDBBackend) IsHistorySupported() bool
IsHistorySupported returns that this backend does support history
func (*OrientDBBackend) MetadataUpdated ¶
func (o *OrientDBBackend) MetadataUpdated(i interface{}) error
MetadataUpdated returns true if a metadata has been updated in the database, based on ArchivedAt
func (*OrientDBBackend) NodeAdded ¶
func (o *OrientDBBackend) NodeAdded(n *Node) error
NodeAdded add a node in the database
func (*OrientDBBackend) NodeDeleted ¶
func (o *OrientDBBackend) NodeDeleted(n *Node) error
NodeDeleted delete a node in the database
func (*OrientDBBackend) OnStarted ¶
func (o *OrientDBBackend) OnStarted()
OnStarted implements storage client listener interface
type PartiallyUpdatedOp ¶ added in v0.23.0
type PartiallyUpdatedOp struct {
Type PartiallyUpdatedOpType
Key string
Value interface{}
}
PartiallyUpdatedOp describes a way to update partially node or edge
type PartiallyUpdatedOpType ¶ added in v0.23.0
type PartiallyUpdatedOpType int
PartiallyUpdatedOpType operation type add/del
const ( // PartiallyUpdatedAddOpType add metadata PartiallyUpdatedAddOpType PartiallyUpdatedOpType = iota + 1 // PartiallyUpdatedDelOpType del metadata PartiallyUpdatedDelOpType )
type Processor ¶
type Processor struct {
common.RWMutex
DefaultGraphListener
MetadataIndexer *MetadataIndexer
// contains filtered or unexported fields
}
Processor encapsulates an indexer that will process NodeActions on the nodes that filter
func NewProcessor ¶
func NewProcessor(g *Graph, listenerHandler ListenerHandler, m ElementMatcher, indexes ...string) (processor *Processor)
NewProcessor creates a Processor on the graph g, a stream of events controlled by listenerHandler, that match a first set of metadata m. Actions will be associated to a given set of values for indexes.
func (*Processor) Cancel ¶
func (processor *Processor) Cancel(values ...interface{})
Cancel the actions attached to a given set of values.
func (*Processor) DoAction ¶
func (processor *Processor) DoAction(action NodeAction, values ...interface{})
DoAction will perform the action for nodes matching values.
func (*Processor) OnNodeUpdated ¶ added in v0.23.0
OnNodeUpdated event
type ResourceLinker ¶
ResourceLinker returns a resource linker. It listens for events from 2 graph events sources to determine if resources from one source should be linked with resources of the other source.
func NewResourceLinker ¶
func NewResourceLinker(g *Graph, glhs1 []ListenerHandler, glhs2 []ListenerHandler, linker Linker, m Metadata) *ResourceLinker
NewResourceLinker returns a new resource linker
func (*ResourceLinker) AddEventListener ¶
func (rl *ResourceLinker) AddEventListener(l LinkerEventListener)
AddEventListener subscribe a new linker listener
func (*ResourceLinker) RemoveEventListener ¶
func (rl *ResourceLinker) RemoveEventListener(l LinkerEventListener)
RemoveEventListener unsubscribe a linker listener
func (*ResourceLinker) Start ¶
func (rl *ResourceLinker) Start()
Start linking resources by listening for graph events
Source Files
¶
- cachedbackend.go
- elasticsearch.go
- filters.go
- graph.go
- indexer.go
- linker.go
- memory.go
- orientdb.go
- processor.go
- sort.go
- time.go