mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-04 01:36:24 +01:00
This commit is a pure refactor. We move the transaction validation (existence, spentness, correctness) from the `graph.Builder` to the gossiper since this is where all protocol level checks should happen. All tests involved are also updated/moved.
61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package graph
|
|
|
|
import "github.com/go-errors/errors"
|
|
|
|
// ErrorCode is used to represent the various errors that can occur within this
|
|
// package.
|
|
type ErrorCode uint8
|
|
|
|
const (
|
|
// ErrOutdated is returned when the routing update already have
|
|
// been applied, or a newer update is already known.
|
|
ErrOutdated ErrorCode = iota
|
|
|
|
// ErrIgnored is returned when the update have been ignored because
|
|
// this update can't bring us something new, or because a node
|
|
// announcement was given for node not found in any channel.
|
|
ErrIgnored
|
|
)
|
|
|
|
// Error is a structure that represent the error inside the graph package,
|
|
// this structure carries additional information about error code in order to
|
|
// be able distinguish errors outside of the current package.
|
|
type Error struct {
|
|
err *errors.Error
|
|
code ErrorCode
|
|
}
|
|
|
|
// Error represents errors as the string
|
|
// NOTE: Part of the error interface.
|
|
func (e *Error) Error() string {
|
|
return e.err.Error()
|
|
}
|
|
|
|
// A compile time check to ensure Error implements the error interface.
|
|
var _ error = (*Error)(nil)
|
|
|
|
// NewErrf creates a Error by the given error formatted description and
|
|
// its corresponding error code.
|
|
func NewErrf(code ErrorCode, format string, a ...interface{}) *Error {
|
|
return &Error{
|
|
code: code,
|
|
err: errors.Errorf(format, a...),
|
|
}
|
|
}
|
|
|
|
// IsError is a helper function which is needed to have ability to check that
|
|
// returned error has specific error code.
|
|
func IsError(e interface{}, codes ...ErrorCode) bool {
|
|
err, ok := e.(*Error)
|
|
if !ok {
|
|
return false
|
|
}
|
|
|
|
for _, code := range codes {
|
|
if err.code == code {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|