package errors import ( "fmt" cmn "github.com/tendermint/tendermint/libs/common" ) //---------------------------------------- // Error types type errCommitNotFound struct{} func (e errCommitNotFound) Error() string { return "Commit not found by provider" } type errUnexpectedValidators struct { got []byte want []byte } func (e errUnexpectedValidators) Error() string { return fmt.Sprintf("Validator set is different. Got %X want %X", e.got, e.want) } type errTooMuchChange struct{} func (e errTooMuchChange) Error() string { return "Insufficient signatures to validate due to valset changes" } type errUnknownValidators struct { chainID string height int64 } func (e errUnknownValidators) Error() string { return fmt.Sprintf("Validators are unknown or missing for chain %s and height %d", e.chainID, e.height) } type errEmptyTree struct{} func (e errEmptyTree) Error() string { return "Tree is empty" } //---------------------------------------- // Methods for above error types //----------------- // ErrCommitNotFound // ErrCommitNotFound indicates that a the requested commit was not found. func ErrCommitNotFound() error { return cmn.ErrorWrap(errCommitNotFound{}, "") } func IsErrCommitNotFound(err error) bool { if err_, ok := err.(cmn.Error); ok { _, ok := err_.Data().(errCommitNotFound) return ok } return false } //----------------- // ErrUnexpectedValidators // ErrUnexpectedValidators indicates a validator set mismatch. func ErrUnexpectedValidators(got, want []byte) error { return cmn.ErrorWrap(errUnexpectedValidators{ got: got, want: want, }, "") } func IsErrUnexpectedValidators(err error) bool { if err_, ok := err.(cmn.Error); ok { _, ok := err_.Data().(errUnexpectedValidators) return ok } return false } //----------------- // ErrTooMuchChange // ErrTooMuchChange indicates that the underlying validator set was changed by >1/3. func ErrTooMuchChange() error { return cmn.ErrorWrap(errTooMuchChange{}, "") } func IsErrTooMuchChange(err error) bool { if err_, ok := err.(cmn.Error); ok { _, ok := err_.Data().(errTooMuchChange) return ok } return false } //----------------- // ErrUnknownValidators // ErrUnknownValidators indicates that some validator set was missing or unknown. func ErrUnknownValidators(chainID string, height int64) error { return cmn.ErrorWrap(errUnknownValidators{chainID, height}, "") } func IsErrUnknownValidators(err error) bool { if err_, ok := err.(cmn.Error); ok { _, ok := err_.Data().(errUnknownValidators) return ok } return false } //----------------- // ErrEmptyTree func ErrEmptyTree() error { return cmn.ErrorWrap(errEmptyTree{}, "") } func IsErrEmptyTree(err error) bool { if err_, ok := err.(cmn.Error); ok { _, ok := err_.Data().(errEmptyTree) return ok } return false }