49 lines
964 B
Go
49 lines
964 B
Go
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,
|
|
}
|
|
}
|