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:
Conner Fromknecht 2020-01-08 12:24:37 -08:00
parent 10f561dbbd
commit f9a1acfbe4
No known key found for this signature in database
GPG Key ID: E7D737B67FA592C7

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
}