From a16b9342aba07e5738bc5f2a927f0c208e1b4254 Mon Sep 17 00:00:00 2001 From: Fenny <08jadez@gmail.com> Date: Mon, 30 Dec 2019 13:30:29 +0100 Subject: [PATCH] Update context.go --- context.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/context.go b/context.go index 57d8859d..5491352e 100644 --- a/context.go +++ b/context.go @@ -66,3 +66,71 @@ func (ctx *Context) Method() string { func (ctx *Context) Path() string { return b2s(ctx.Fasthttp.Path()) } +package fiber + +import ( + "sync" + + "github.com/valyala/fasthttp" +) + +// Context struct +type Context struct { + next bool + params *[]string + values []string + Fasthttp *fasthttp.RequestCtx +} + +// Context pool +var ctxPool = sync.Pool{ + New: func() interface{} { + return new(Context) + }, +} + +// Get new Context from pool +func acquireCtx(fctx *fasthttp.RequestCtx) *Context { + ctx := ctxPool.Get().(*Context) + ctx.Fasthttp = fctx + return ctx +} + +// Return Context to pool +func releaseCtx(ctx *Context) { + ctx.next = false + ctx.params = nil + ctx.values = nil + ctx.Fasthttp = nil + ctxPool.Put(ctx) +} + +// Next : Call the next middleware function in the stack. +func (ctx *Context) Next() { + ctx.next = true + ctx.params = nil + ctx.values = nil +} + +// Params : +func (ctx *Context) Params(key string) string { + if ctx.params == nil { + return "" + } + for i := 0; i < len(*ctx.params); i++ { + if (*ctx.params)[i] == key { + return ctx.values[i] + } + } + return "" +} + +// Method https://expressjs.com/en/4x/api.html#req.method +func (ctx *Context) Method() string { + return b2s(ctx.Fasthttp.Method()) +} + +// Path https://expressjs.com/en/4x/api.html#req.path +func (ctx *Context) Path() string { + return b2s(ctx.Fasthttp.Path()) +}