htlcswitch: add new method to the ChannelLink interface, EligibleToForward
In this commit, we add a new method to the ChanneLink interface: EligibleToForward. This method allows a link to be added to the switch, but in an intermediate state which indicates that it isn’t yet ready to forward any incoming HTLC’s.
This commit is contained in:
parent
455568279b
commit
36956d390f
@ -85,6 +85,13 @@ type ChannelLink interface {
|
||||
// the channel link opened.
|
||||
Peer() Peer
|
||||
|
||||
// EligibleToForward returns a bool indicating if the channel is able
|
||||
// to actively accept requests to forward HTLC's. A channel may be
|
||||
// active, but not able to forward HTLC's if it hasn't yet finalized
|
||||
// the pre-channel operation protocol with the remote peer. The switch
|
||||
// will use this function in forwarding decisions accordingly.
|
||||
EligibleToForward() bool
|
||||
|
||||
// Start/Stop are used to initiate the start/stop of the channel link
|
||||
// functioning.
|
||||
Start() error
|
||||
|
@ -292,6 +292,14 @@ func (l *channelLink) Stop() {
|
||||
l.cfg.BlockEpochs.Cancel()
|
||||
}
|
||||
|
||||
// EligibleToForward returns a bool indicating if the channel is able to
|
||||
// actively accept requests to forward HTLC's. We're able to forward HTLC's if
|
||||
// we know the remote party's next revocation point. Otherwise, we can't
|
||||
// initiate new channel state.
|
||||
func (l *channelLink) EligibleToForward() bool {
|
||||
return l.channel.RemoteNextRevocation() != nil
|
||||
}
|
||||
|
||||
// sampleNetworkFee samples the current fee rate on the network to get into the
|
||||
// chain in a timely manner. The returned value is expressed in fee-per-kw, as
|
||||
// this is the native rate used when computing the fee for commitment
|
||||
|
@ -430,6 +430,7 @@ func (f *mockChannelLink) Bandwidth() lnwire.MilliSatoshi { return 99999999
|
||||
func (f *mockChannelLink) Peer() Peer { return f.peer }
|
||||
func (f *mockChannelLink) Start() error { return nil }
|
||||
func (f *mockChannelLink) Stop() {}
|
||||
func (f *mockChannelLink) EligibleToForward() bool { return true }
|
||||
|
||||
var _ ChannelLink = (*mockChannelLink)(nil)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user