feature/required: add ValidateRequired method
This wraps the raw UnknownRequiredFeatures method and returns a proper error type to enable more exact testing.
This commit is contained in:
parent
10f561dbbd
commit
f9a1acfbe4
37
feature/required.go
Normal file
37
feature/required.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
package feature
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/lightningnetwork/lnd/lnwire"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ErrUnknownRequired signals that a feature vector requires certain features
|
||||||
|
// that our node is unaware of or does not implement.
|
||||||
|
type ErrUnknownRequired struct {
|
||||||
|
unknown []lnwire.FeatureBit
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewErrUnknownRequired initializes an ErrUnknownRequired with the unknown
|
||||||
|
// feature bits.
|
||||||
|
func NewErrUnknownRequired(unknown []lnwire.FeatureBit) ErrUnknownRequired {
|
||||||
|
return ErrUnknownRequired{
|
||||||
|
unknown: unknown,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error returns a human-readable description of the error.
|
||||||
|
func (e ErrUnknownRequired) Error() string {
|
||||||
|
return fmt.Sprintf("feature vector contains unknown required "+
|
||||||
|
"features: %v", e.unknown)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidateRequired returns an error if the feature vector contains a non-zero
|
||||||
|
// number of unknown, required feature bits.
|
||||||
|
func ValidateRequired(fv *lnwire.FeatureVector) error {
|
||||||
|
unknown := fv.UnknownRequiredFeatures()
|
||||||
|
if len(unknown) > 0 {
|
||||||
|
return NewErrUnknownRequired(unknown)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user