44 lines
605 B
Go
44 lines
605 B
Go
|
package l_request
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
type RequestPool struct {
|
||
|
pool sync.Pool
|
||
|
}
|
||
|
|
||
|
var RequestPools = &RequestPool{
|
||
|
pool: sync.Pool{
|
||
|
New: func() interface{} {
|
||
|
return new(Request)
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func (re *RequestPool) Get() *Request {
|
||
|
return re.pool.Get().(*Request)
|
||
|
}
|
||
|
|
||
|
func (re *RequestPool) Put(r *Request) {
|
||
|
re.pool.Put(r)
|
||
|
}
|
||
|
|
||
|
func (re *RequestPool) Reset(r *Request) {
|
||
|
r.Method = ""
|
||
|
r.Url = ""
|
||
|
r.Params = nil
|
||
|
r.Headers = nil
|
||
|
r.Cookies = nil
|
||
|
r.Data = nil
|
||
|
r.Json = nil
|
||
|
r.Files = nil
|
||
|
r.Raw = ""
|
||
|
r.JsonByte = nil
|
||
|
}
|
||
|
|
||
|
func (re *RequestPool) ClearAndPut(r *Request) {
|
||
|
re.Reset(r)
|
||
|
re.Put(r)
|
||
|
}
|