mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
6d80ddfe91
This commit changes missioncontrol's store update from per payment to every second. Updating the missioncontrol store on every payment caused gradual slowdown when using etcd. We also completely eliminate the use of the cursor, further reducing the performance bottleneck.
73 lines
2.5 KiB
Go
73 lines
2.5 KiB
Go
package routerrpc
|
|
|
|
import (
|
|
"github.com/lightningnetwork/lnd/macaroons"
|
|
"github.com/lightningnetwork/lnd/routing"
|
|
)
|
|
|
|
// Config is the main configuration file for the router RPC server. It contains
|
|
// all the items required for the router RPC server to carry out its duties.
|
|
// The fields with struct tags are meant to be parsed as normal configuration
|
|
// options, while if able to be populated, the latter fields MUST also be
|
|
// specified.
|
|
type Config struct {
|
|
RoutingConfig
|
|
|
|
// RouterMacPath is the path for the router macaroon. If unspecified
|
|
// then we assume that the macaroon will be found under the network
|
|
// directory, named DefaultRouterMacFilename.
|
|
RouterMacPath string `long:"routermacaroonpath" description:"Path to the router macaroon"`
|
|
|
|
// NetworkDir is the main network directory wherein the router rpc
|
|
// server will find the macaroon named DefaultRouterMacFilename.
|
|
NetworkDir string
|
|
|
|
// MacService is the main macaroon service that we'll use to handle
|
|
// authentication for the Router rpc server.
|
|
MacService *macaroons.Service
|
|
|
|
// Router is the main channel router instance that backs this RPC
|
|
// server.
|
|
//
|
|
// TODO(roasbeef): make into pkg lvl interface?
|
|
//
|
|
// TODO(roasbeef): assumes router handles saving payment state
|
|
Router *routing.ChannelRouter
|
|
|
|
// RouterBackend contains shared logic between this sub server and the
|
|
// main rpc server.
|
|
RouterBackend *RouterBackend
|
|
}
|
|
|
|
// DefaultConfig defines the config defaults.
|
|
func DefaultConfig() *Config {
|
|
defaultRoutingConfig := RoutingConfig{
|
|
AprioriHopProbability: routing.DefaultAprioriHopProbability,
|
|
AprioriWeight: routing.DefaultAprioriWeight,
|
|
MinRouteProbability: routing.DefaultMinRouteProbability,
|
|
PenaltyHalfLife: routing.DefaultPenaltyHalfLife,
|
|
AttemptCost: routing.DefaultAttemptCost.ToSatoshis(),
|
|
AttemptCostPPM: routing.DefaultAttemptCostPPM,
|
|
MaxMcHistory: routing.DefaultMaxMcHistory,
|
|
McFlushInterval: routing.DefaultMcFlushInterval,
|
|
}
|
|
|
|
return &Config{
|
|
RoutingConfig: defaultRoutingConfig,
|
|
}
|
|
}
|
|
|
|
// GetRoutingConfig returns the routing config based on this sub server config.
|
|
func GetRoutingConfig(cfg *Config) *RoutingConfig {
|
|
return &RoutingConfig{
|
|
AprioriHopProbability: cfg.AprioriHopProbability,
|
|
AprioriWeight: cfg.AprioriWeight,
|
|
MinRouteProbability: cfg.MinRouteProbability,
|
|
AttemptCost: cfg.AttemptCost,
|
|
AttemptCostPPM: cfg.AttemptCostPPM,
|
|
PenaltyHalfLife: cfg.PenaltyHalfLife,
|
|
MaxMcHistory: cfg.MaxMcHistory,
|
|
McFlushInterval: cfg.McFlushInterval,
|
|
}
|
|
}
|