mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-04 09:48:19 +01:00
Which describes methods that will use the graph cache if it is available for fast read-only calls.
39 lines
1.6 KiB
Go
39 lines
1.6 KiB
Go
package graphdb
|
|
|
|
import (
|
|
"github.com/lightningnetwork/lnd/graph/db/models"
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
"github.com/lightningnetwork/lnd/routing/route"
|
|
)
|
|
|
|
// NodeRTx represents transaction object with an underlying node associated that
|
|
// can be used to make further queries to the graph under the same transaction.
|
|
// This is useful for consistency during graph traversal and queries.
|
|
type NodeRTx interface {
|
|
// Node returns the raw information of the node.
|
|
Node() *models.LightningNode
|
|
|
|
// ForEachChannel can be used to iterate over the node's channels under
|
|
// the same transaction used to fetch the node.
|
|
ForEachChannel(func(*models.ChannelEdgeInfo, *models.ChannelEdgePolicy,
|
|
*models.ChannelEdgePolicy) error) error
|
|
|
|
// FetchNode fetches the node with the given pub key under the same
|
|
// transaction used to fetch the current node. The returned node is also
|
|
// a NodeRTx and any operations on that NodeRTx will also be done under
|
|
// the same transaction.
|
|
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)
|
|
}
|