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.
|
// the channel link opened.
|
||||||
Peer() Peer
|
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
|
// Start/Stop are used to initiate the start/stop of the channel link
|
||||||
// functioning.
|
// functioning.
|
||||||
Start() error
|
Start() error
|
||||||
|
@ -292,6 +292,14 @@ func (l *channelLink) Stop() {
|
|||||||
l.cfg.BlockEpochs.Cancel()
|
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
|
// 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
|
// 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
|
// 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) Peer() Peer { return f.peer }
|
||||||
func (f *mockChannelLink) Start() error { return nil }
|
func (f *mockChannelLink) Start() error { return nil }
|
||||||
func (f *mockChannelLink) Stop() {}
|
func (f *mockChannelLink) Stop() {}
|
||||||
|
func (f *mockChannelLink) EligibleToForward() bool { return true }
|
||||||
|
|
||||||
var _ ChannelLink = (*mockChannelLink)(nil)
|
var _ ChannelLink = (*mockChannelLink)(nil)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user