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 }