浏览代码

Using uint64 for ErrorType

Manu Mtz-Almeida 10 年之前
父节点
当前提交
2ebb6dcb95
共有 2 个文件被更改,包括 12 次插入10 次删除
  1. 11 9
      errors.go
  2. 1 1
      logger.go

+ 11 - 9
errors.go

@@ -11,20 +11,22 @@ import (
 	"reflect"
 	"reflect"
 )
 )
 
 
+type ErrorType uint64
+
 const (
 const (
-	ErrorTypeBind    = 1 << 30
-	ErrorTypeRender  = 1 << 29
-	ErrorTypePrivate = 1 << 0
-	ErrorTypePublic  = 1 << 1
+	ErrorTypeBind    ErrorType = 1 << 63 // used when c.Bind() fails
+	ErrorTypeRender  ErrorType = 1 << 62 // used when c.Render() fails
+	ErrorTypePrivate ErrorType = 1 << 0
+	ErrorTypePublic  ErrorType = 1 << 1
 
 
-	ErrorTypeAny = 0xfffffff
-	ErrorTypeNu  = 2
+	ErrorTypeAny ErrorType = 1<<64 - 1
+	ErrorTypeNu            = 2
 )
 )
 
 
 type (
 type (
 	Error struct {
 	Error struct {
 		Err  error       `json:"error"`
 		Err  error       `json:"error"`
-		Type int         `json:"-"`
+		Type ErrorType   `json:"-"`
 		Meta interface{} `json:"meta"`
 		Meta interface{} `json:"meta"`
 	}
 	}
 
 
@@ -33,7 +35,7 @@ type (
 
 
 var _ error = &Error{}
 var _ error = &Error{}
 
 
-func (msg *Error) SetType(flags int) *Error {
+func (msg *Error) SetType(flags ErrorType) *Error {
 	msg.Type = flags
 	msg.Type = flags
 	return msg
 	return msg
 }
 }
@@ -72,7 +74,7 @@ func (msg *Error) Error() string {
 	return msg.Err.Error()
 	return msg.Err.Error()
 }
 }
 
 
-func (a errorMsgs) ByType(typ int) errorMsgs {
+func (a errorMsgs) ByType(typ ErrorType) errorMsgs {
 	if len(a) == 0 {
 	if len(a) == 0 {
 		return a
 		return a
 	}
 	}

+ 1 - 1
logger.go

@@ -25,7 +25,7 @@ func ErrorLogger() HandlerFunc {
 	return ErrorLoggerT(ErrorTypeAny)
 	return ErrorLoggerT(ErrorTypeAny)
 }
 }
 
 
-func ErrorLoggerT(typ int) HandlerFunc {
+func ErrorLoggerT(typ ErrorType) HandlerFunc {
 	return func(c *Context) {
 	return func(c *Context) {
 		c.Next()
 		c.Next()