You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
964 B
48 lines
964 B
package pb |
|
|
|
import ( |
|
"strconv" |
|
|
|
"go-common/library/ecode" |
|
|
|
any "github.com/golang/protobuf/ptypes/any" |
|
) |
|
|
|
func (e *Error) Error() string { |
|
return strconv.FormatInt(int64(e.GetErrCode()), 10) |
|
} |
|
|
|
// Code is the code of error. |
|
func (e *Error) Code() int { |
|
return int(e.GetErrCode()) |
|
} |
|
|
|
// Message is error message. |
|
func (e *Error) Message() string { |
|
return e.GetErrMessage() |
|
} |
|
|
|
// Equal compare whether two errors are equal. |
|
func (e *Error) Equal(ec error) bool { |
|
return ecode.Cause(ec).Code() == e.Code() |
|
} |
|
|
|
// Details return error details. |
|
func (e *Error) Details() []interface{} { |
|
return []interface{}{e.GetErrDetail()} |
|
} |
|
|
|
// From will convert ecode.Codes to pb.Error. |
|
// |
|
// Deprecated: please use ecode.Error |
|
func From(ec ecode.Codes) *Error { |
|
var detail *any.Any |
|
if details := ec.Details(); len(details) > 0 { |
|
detail, _ = details[0].(*any.Any) |
|
} |
|
return &Error{ |
|
ErrCode: int32(ec.Code()), |
|
ErrMessage: ec.Message(), |
|
ErrDetail: detail, |
|
} |
|
}
|
|
|