-
Notifications
You must be signed in to change notification settings - Fork 0
/
middleware.go
40 lines (32 loc) · 1.7 KB
/
middleware.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package types
// PacketMiddlewareFunc is a function which receives a PacketHandlerFunc and returns another PacketHandlerFunc.
type PacketMiddlewareFunc func(PacketHandlerFunc) PacketHandlerFunc
// packetMiddleware interface is anything which implements a PacketMiddlewareFunc named Middleware.
type packetMiddleware interface {
Middleware(handler PacketHandlerFunc) PacketHandlerFunc
}
// Middleware allows PacketHandlerFunc to implement the packetMiddleware interface.
func (mw PacketMiddlewareFunc) Middleware(handler PacketHandlerFunc) PacketHandlerFunc {
return mw(handler)
}
// UsePacketMiddlewares appends a PacketMiddlewareFunc to the chain. Middleware can be used to intercept or otherwise modify requests and/or responses, and are executed in the order that they are applied to the Router.
func (r *Router) UsePacketMiddlewares(mwf ...PacketMiddlewareFunc) {
for _, fn := range mwf {
r.packetMiddlewares = append(r.packetMiddlewares, fn)
}
}
// ACKMiddlewareFunc is a function which receives a ACKHandlerFunc and returns another ACKHandlerFunc.
type ACKMiddlewareFunc func(ACKHandlerFunc) ACKHandlerFunc
type ackMiddleware interface {
Middleware(handler ACKHandlerFunc) ACKHandlerFunc
}
// Middleware allows MiddlewareFunc to implement the middleware interface.
func (mw ACKMiddlewareFunc) Middleware(handler ACKHandlerFunc) ACKHandlerFunc {
return mw(handler)
}
// UseACKMiddlewares appends a ACKMiddlewareFunc to the chain. Middleware can be used to intercept or otherwise modify requests and/or responses, and are executed in the order that they are applied to the Router.
func (r *Router) UseACKMiddlewares(mwf ...ACKMiddlewareFunc) {
for _, fn := range mwf {
r.ackMiddlewares = append(r.ackMiddlewares, fn)
}
}