mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-29 03:01:52 +01:00
graph/db: define a NodeTraverser interface
Which describes methods that will use the graph cache if it is available for fast read-only calls.
This commit is contained in:
parent
8ec08fbfa4
commit
99c9440520
@ -602,6 +602,8 @@ func (c *ChannelGraph) FetchNodeFeaturesTx(tx kvdb.RTx,
|
|||||||
// of the database.
|
// of the database.
|
||||||
//
|
//
|
||||||
// Unknown policies are passed into the callback as nil values.
|
// Unknown policies are passed into the callback as nil values.
|
||||||
|
//
|
||||||
|
// NOTE: this is part of the graphdb.NodeTraverser interface.
|
||||||
func (c *ChannelGraph) ForEachNodeDirectedChannel(nodePub route.Vertex,
|
func (c *ChannelGraph) ForEachNodeDirectedChannel(nodePub route.Vertex,
|
||||||
cb func(channel *DirectedChannel) error) error {
|
cb func(channel *DirectedChannel) error) error {
|
||||||
|
|
||||||
@ -612,6 +614,8 @@ func (c *ChannelGraph) ForEachNodeDirectedChannel(nodePub route.Vertex,
|
|||||||
// known for the node, an empty feature vector is returned.
|
// known for the node, an empty feature vector is returned.
|
||||||
// If the graphCache is available, then it will be used to retrieve the node's
|
// If the graphCache is available, then it will be used to retrieve the node's
|
||||||
// features instead of the database.
|
// features instead of the database.
|
||||||
|
//
|
||||||
|
// NOTE: this is part of the graphdb.NodeTraverser interface.
|
||||||
func (c *ChannelGraph) FetchNodeFeatures(nodePub route.Vertex) (
|
func (c *ChannelGraph) FetchNodeFeatures(nodePub route.Vertex) (
|
||||||
*lnwire.FeatureVector, error) {
|
*lnwire.FeatureVector, error) {
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package graphdb
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/lightningnetwork/lnd/graph/db/models"
|
"github.com/lightningnetwork/lnd/graph/db/models"
|
||||||
|
"github.com/lightningnetwork/lnd/lnwire"
|
||||||
"github.com/lightningnetwork/lnd/routing/route"
|
"github.com/lightningnetwork/lnd/routing/route"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -23,3 +24,16 @@ type NodeRTx interface {
|
|||||||
// the same transaction.
|
// the same transaction.
|
||||||
FetchNode(node route.Vertex) (NodeRTx, error)
|
FetchNode(node route.Vertex) (NodeRTx, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NodeTraverser is an abstract read only interface that provides information
|
||||||
|
// about nodes and their edges. The interface is about providing fast read-only
|
||||||
|
// access to the graph and so if a cache is available, it should be used.
|
||||||
|
type NodeTraverser interface {
|
||||||
|
// ForEachNodeDirectedChannel calls the callback for every channel of
|
||||||
|
// the given node.
|
||||||
|
ForEachNodeDirectedChannel(nodePub route.Vertex,
|
||||||
|
cb func(channel *DirectedChannel) error) error
|
||||||
|
|
||||||
|
// FetchNodeFeatures returns the features of the given node.
|
||||||
|
FetchNodeFeatures(nodePub route.Vertex) (*lnwire.FeatureVector, error)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user