Adds Keep() and Release() to gin.Context
This commit is contained in:
parent
30ea9c06fc
commit
d9573b45c7
21
gin.go
21
gin.go
@ -45,6 +45,7 @@ type (
|
|||||||
Errors ErrorMsgs
|
Errors ErrorMsgs
|
||||||
Params httprouter.Params
|
Params httprouter.Params
|
||||||
Engine *Engine
|
Engine *Engine
|
||||||
|
keep bool
|
||||||
handlers []HandlerFunc
|
handlers []HandlerFunc
|
||||||
index int8
|
index int8
|
||||||
}
|
}
|
||||||
@ -180,6 +181,7 @@ func (engine *Engine) createContext(w http.ResponseWriter, req *http.Request, pa
|
|||||||
Writer: w,
|
Writer: w,
|
||||||
Req: req,
|
Req: req,
|
||||||
Params: params,
|
Params: params,
|
||||||
|
keep: false,
|
||||||
handlers: handlers,
|
handlers: handlers,
|
||||||
index: -1,
|
index: -1,
|
||||||
Engine: engine,
|
Engine: engine,
|
||||||
@ -188,11 +190,13 @@ func (engine *Engine) createContext(w http.ResponseWriter, req *http.Request, pa
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) reuseContext(c *Context) {
|
func (engine *Engine) reuseContext(c *Context) {
|
||||||
|
if c.keep == false {
|
||||||
select {
|
select {
|
||||||
case engine.cache <- c:
|
case engine.cache <- c:
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Adds middlewares to the group, see example code in github.
|
// Adds middlewares to the group, see example code in github.
|
||||||
func (group *RouterGroup) Use(middlewares ...HandlerFunc) {
|
func (group *RouterGroup) Use(middlewares ...HandlerFunc) {
|
||||||
@ -268,6 +272,23 @@ func (group *RouterGroup) combineHandlers(handlers []HandlerFunc) []HandlerFunc
|
|||||||
/****** FLOW AND ERROR MANAGEMENT****/
|
/****** FLOW AND ERROR MANAGEMENT****/
|
||||||
/************************************/
|
/************************************/
|
||||||
|
|
||||||
|
func (c *Context) Keep() {
|
||||||
|
if c.keep == false {
|
||||||
|
c.keep = true
|
||||||
|
} else {
|
||||||
|
log.Println("gin: trying to Keep same context several times")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Context) Release() {
|
||||||
|
if c.keep == true {
|
||||||
|
c.keep = false
|
||||||
|
c.Engine.reuseContext(c)
|
||||||
|
} else {
|
||||||
|
log.Println("gin: bug: trying to Release same context several times")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Next should be used only in the middlewares.
|
// Next should be used only in the middlewares.
|
||||||
// It executes the pending handlers in the chain inside the calling handler.
|
// It executes the pending handlers in the chain inside the calling handler.
|
||||||
// See example in github.
|
// See example in github.
|
||||||
|
Loading…
Reference in New Issue
Block a user