|
package provider
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
var (
|
|
// ErrHeightTooHigh is returned when the height is higher than the last
|
|
// block that the provider has. The light client will not remove the provider
|
|
ErrHeightTooHigh = errors.New("height requested is too high")
|
|
// ErrLightBlockNotFound is returned when a provider can't find the
|
|
// requested header (i.e. it has been pruned).
|
|
// The light client will not remove the provider
|
|
ErrLightBlockNotFound = errors.New("light block not found")
|
|
// ErrNoResponse is returned if the provider doesn't respond to the
|
|
// request in a given time. The light client will not remove the provider
|
|
ErrNoResponse = errors.New("client failed to respond")
|
|
// ErrConnectionClosed is returned if the provider closes the connection.
|
|
// In this case we remove the provider.
|
|
ErrConnectionClosed = errors.New("client closed connection")
|
|
)
|
|
|
|
// ErrBadLightBlock is returned when a provider returns an invalid
|
|
// light block. The light client will remove the provider.
|
|
type ErrBadLightBlock struct {
|
|
Reason error
|
|
}
|
|
|
|
func (e ErrBadLightBlock) Error() string {
|
|
return fmt.Sprintf("client provided bad signed header: %v", e.Reason)
|
|
}
|
|
|
|
func (e ErrBadLightBlock) Unwrap() error { return e.Reason }
|
|
|
|
// ErrUnreliableProvider is a generic error that indicates that the provider isn't
|
|
// behaving in a reliable manner to the light client. The light client will
|
|
// remove the provider
|
|
type ErrUnreliableProvider struct {
|
|
Reason error
|
|
}
|
|
|
|
func (e ErrUnreliableProvider) Error() string {
|
|
return fmt.Sprintf("client deemed unreliable: %v", e.Reason)
|
|
}
|
|
|
|
func (e ErrUnreliableProvider) Unwrap() error { return e.Reason }
|