2569b4d08a
This commit repalces the htlcResolution struct with an interface. This interface is implemeted by failure, settle and accept resolution structs. Only settles and fails are exported because the existing code that handles htlc resolutions uses a nil resolution to indicate that a htlc was accepted. The accept resolution is used internally to report on the resolution result of the accepted htlc, but a nil resolution is surfaced. Further refactoring of all the functions that call NotifyExitHopHtlc to handle a htlc accept case (rather than having a nil check) is required.
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package contractcourt
|
|
|
|
import (
|
|
"github.com/lightningnetwork/lnd/channeldb"
|
|
"github.com/lightningnetwork/lnd/invoices"
|
|
"github.com/lightningnetwork/lnd/lntypes"
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
)
|
|
|
|
type notifyExitHopData struct {
|
|
payHash lntypes.Hash
|
|
paidAmount lnwire.MilliSatoshi
|
|
hodlChan chan<- interface{}
|
|
expiry uint32
|
|
currentHeight int32
|
|
}
|
|
|
|
type mockRegistry struct {
|
|
notifyChan chan notifyExitHopData
|
|
notifyErr error
|
|
notifyResolution invoices.HtlcResolution
|
|
}
|
|
|
|
func (r *mockRegistry) NotifyExitHopHtlc(payHash lntypes.Hash,
|
|
paidAmount lnwire.MilliSatoshi, expiry uint32, currentHeight int32,
|
|
circuitKey channeldb.CircuitKey, hodlChan chan<- interface{},
|
|
payload invoices.Payload) (invoices.HtlcResolution, error) {
|
|
|
|
r.notifyChan <- notifyExitHopData{
|
|
hodlChan: hodlChan,
|
|
payHash: payHash,
|
|
paidAmount: paidAmount,
|
|
expiry: expiry,
|
|
currentHeight: currentHeight,
|
|
}
|
|
|
|
return r.notifyResolution, r.notifyErr
|
|
}
|
|
|
|
func (r *mockRegistry) HodlUnsubscribeAll(subscriber chan<- interface{}) {}
|
|
|
|
func (r *mockRegistry) LookupInvoice(lntypes.Hash) (channeldb.Invoice,
|
|
error) {
|
|
|
|
return channeldb.Invoice{}, channeldb.ErrInvoiceNotFound
|
|
}
|