l_request/pool.go

45 lines
621 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)
}