Lines Matching refs:mx

60 func (mx *Mux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
62 if mx.handler == nil {
63 mx.NotFoundHandler().ServeHTTP(w, r)
70 mx.handler.ServeHTTP(w, r)
78 rctx = mx.pool.Get().(*Context)
80 rctx.Routes = mx
82 mx.handler.ServeHTTP(w, r)
83 mx.pool.Put(rctx)
92 func (mx *Mux) Use(middlewares ...func(http.Handler) http.Handler) {
93 if mx.handler != nil {
96 mx.middlewares = append(mx.middlewares, middlewares...)
101 func (mx *Mux) Handle(pattern string, handler http.Handler) {
102 mx.handle(mALL, pattern, handler)
107 func (mx *Mux) HandleFunc(pattern string, handlerFn http.HandlerFunc) {
108 mx.handle(mALL, pattern, handlerFn)
113 func (mx *Mux) Method(method, pattern string, handler http.Handler) {
118 mx.handle(m, pattern, handler)
123 func (mx *Mux) MethodFunc(method, pattern string, handlerFn http.HandlerFunc) {
124 mx.Method(method, pattern, handlerFn)
129 func (mx *Mux) Connect(pattern string, handlerFn http.HandlerFunc) {
130 mx.handle(mCONNECT, pattern, handlerFn)
135 func (mx *Mux) Delete(pattern string, handlerFn http.HandlerFunc) {
136 mx.handle(mDELETE, pattern, handlerFn)
141 func (mx *Mux) Get(pattern string, handlerFn http.HandlerFunc) {
142 mx.handle(mGET, pattern, handlerFn)
147 func (mx *Mux) Head(pattern string, handlerFn http.HandlerFunc) {
148 mx.handle(mHEAD, pattern, handlerFn)
153 func (mx *Mux) Options(pattern string, handlerFn http.HandlerFunc) {
154 mx.handle(mOPTIONS, pattern, handlerFn)
159 func (mx *Mux) Patch(pattern string, handlerFn http.HandlerFunc) {
160 mx.handle(mPATCH, pattern, handlerFn)
165 func (mx *Mux) Post(pattern string, handlerFn http.HandlerFunc) {
166 mx.handle(mPOST, pattern, handlerFn)
171 func (mx *Mux) Put(pattern string, handlerFn http.HandlerFunc) {
172 mx.handle(mPUT, pattern, handlerFn)
177 func (mx *Mux) Trace(pattern string, handlerFn http.HandlerFunc) {
178 mx.handle(mTRACE, pattern, handlerFn)
183 func (mx *Mux) NotFound(handlerFn http.HandlerFunc) {
185 m := mx
187 if mx.inline && mx.parent != nil {
188 m = mx.parent
189 hFn = Chain(mx.middlewares...).HandlerFunc(hFn).ServeHTTP
203 func (mx *Mux) MethodNotAllowed(handlerFn http.HandlerFunc) {
205 m := mx
207 if mx.inline && mx.parent != nil {
208 m = mx.parent
209 hFn = Chain(mx.middlewares...).HandlerFunc(hFn).ServeHTTP
222 func (mx *Mux) With(middlewares ...func(http.Handler) http.Handler) Router {
225 if !mx.inline && mx.handler == nil {
226 mx.buildRouteHandler()
231 if mx.inline {
232 mws = make(Middlewares, len(mx.middlewares))
233 copy(mws, mx.middlewares)
237 im := &Mux{pool: mx.pool, inline: true, parent: mx, tree: mx.tree, middlewares: mws}
245 func (mx *Mux) Group(fn func(r Router)) Router {
246 im := mx.With().(*Mux)
256 func (mx *Mux) Route(pattern string, fn func(r Router)) Router {
261 mx.Mount(pattern, subRouter)
272 func (mx *Mux) Mount(pattern string, handler http.Handler) {
275 if mx.tree.findPattern(pattern+"*") || mx.tree.findPattern(pattern+"/*") {
281 if ok && subr.notFoundHandler == nil && mx.notFoundHandler != nil {
282 subr.NotFound(mx.notFoundHandler)
284 if ok && subr.methodNotAllowedHandler == nil && mx.methodNotAllowedHandler != nil {
285 subr.MethodNotAllowed(mx.methodNotAllowedHandler)
291 rctx.RoutePath = mx.nextRoutePath(rctx)
296 mx.handle(mALL|mSTUB, pattern, mountHandler)
297 mx.handle(mALL|mSTUB, pattern+"/", mountHandler)
306 n := mx.handle(method, pattern+"*", mountHandler)
315 func (mx *Mux) Routes() []Route {
316 return mx.tree.routes()
320 func (mx *Mux) Middlewares() Middlewares {
321 return mx.middlewares
330 func (mx *Mux) Match(rctx *Context, method, path string) bool {
336 node, _, h := mx.tree.FindRoute(rctx, m, path)
339 rctx.RoutePath = mx.nextRoutePath(rctx)
348 func (mx *Mux) NotFoundHandler() http.HandlerFunc {
349 if mx.notFoundHandler != nil {
350 return mx.notFoundHandler
357 func (mx *Mux) MethodNotAllowedHandler() http.HandlerFunc {
358 if mx.methodNotAllowedHandler != nil {
359 return mx.methodNotAllowedHandler
368 func (mx *Mux) buildRouteHandler() {
369 mx.handler = chain(mx.middlewares, http.HandlerFunc(mx.routeHTTP))
374 func (mx *Mux) handle(method methodTyp, pattern string, handler http.Handler) *node {
380 if !mx.inline && mx.handler == nil {
381 mx.buildRouteHandler()
386 if mx.inline {
387 mx.handler = http.HandlerFunc(mx.routeHTTP)
388 h = Chain(mx.middlewares...).Handler(handler)
394 return mx.tree.InsertRoute(method, pattern, h)
399 func (mx *Mux) routeHTTP(w http.ResponseWriter, r *http.Request) {
419 mx.MethodNotAllowedHandler().ServeHTTP(w, r)
424 if _, _, h := mx.tree.FindRoute(rctx, method, routePath); h != nil {
429 mx.MethodNotAllowedHandler().ServeHTTP(w, r)
431 mx.NotFoundHandler().ServeHTTP(w, r)
435 func (mx *Mux) nextRoutePath(rctx *Context) string {
445 func (mx *Mux) updateSubRoutes(fn func(subMux *Mux)) {
446 for _, r := range mx.tree.routes() {