lotus/api/api_errors.go

43 lines
770 B
Go
Raw Permalink Normal View History

2022-07-18 16:36:51 +00:00
package api
import (
"errors"
"reflect"
2022-07-18 16:36:51 +00:00
"github.com/filecoin-project/go-jsonrpc"
)
const (
EOutOfGas = iota + jsonrpc.FirstUserCode
EActorNotFound
)
type ErrOutOfGas struct{}
func (e *ErrOutOfGas) Error() string {
2022-07-18 16:36:51 +00:00
return "call ran out of gas"
}
type ErrActorNotFound struct{}
func (e *ErrActorNotFound) Error() string {
2022-07-18 16:36:51 +00:00
return "actor not found"
}
var RPCErrors = jsonrpc.NewErrors()
func ErrorIsIn(err error, errorTypes []error) bool {
for _, etype := range errorTypes {
tmp := reflect.New(reflect.PointerTo(reflect.ValueOf(etype).Elem().Type())).Interface()
if errors.As(err, tmp) {
return true
}
}
return false
}
2022-07-18 16:36:51 +00:00
func init() {
RPCErrors.Register(EOutOfGas, new(*ErrOutOfGas))
RPCErrors.Register(EActorNotFound, new(*ErrActorNotFound))
2022-07-18 16:36:51 +00:00
}