diff --git a/types/retcode.go b/types/retcode.go index bccd9a4c..640f6236 100644 --- a/types/retcode.go +++ b/types/retcode.go @@ -1,12 +1,31 @@ package types +import ( + "errors" +) + type RetCode int // Reserved return codes const ( - RetCodeOK = RetCode(0) - RetCodeInternalError = RetCode(1) - RetCodeUnauthorized = RetCode(2) - RetCodeInsufficientFees = RetCode(3) - RetCodeUnknownRequest = RetCode(4) + RetCodeOK RetCode = 0 + RetCodeInternalError RetCode = 1 + RetCodeUnauthorized RetCode = 2 + RetCodeInsufficientFees RetCode = 3 + RetCodeUnknownRequest RetCode = 4 ) + +func (r RetCode) Error() error { + switch r { + case RetCodeOK: + return nil + default: + return errors.New(r.String()) + } +} + +//go:generate stringer -type=RetCode + +// NOTE: The previous comment generates r.String(). +// To run it, `go get golang.org/x/tools/cmd/stringer` +// and `go generate` in tmsp/types diff --git a/types/retcode_string.go b/types/retcode_string.go new file mode 100644 index 00000000..17ea7766 --- /dev/null +++ b/types/retcode_string.go @@ -0,0 +1,16 @@ +// generated by stringer -type=RetCode; DO NOT EDIT + +package types + +import "fmt" + +const _RetCode_name = "RetCodeOKRetCodeInternalErrorRetCodeUnauthorizedRetCodeInsufficientFeesRetCodeUnknownRequest" + +var _RetCode_index = [...]uint8{0, 9, 29, 48, 71, 92} + +func (i RetCode) String() string { + if i < 0 || i+1 >= RetCode(len(_RetCode_index)) { + return fmt.Sprintf("RetCode(%d)", i) + } + return _RetCode_name[_RetCode_index[i]:_RetCode_index[i+1]] +}