1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-08-10 21:52:01 +02:00

Add wrapper implementation

This commit is contained in:
Asim
2015-11-26 20:36:42 +00:00
parent 4fa909a3c7
commit fb172df0ce
4 changed files with 144 additions and 3 deletions

37
client/wrapper.go Normal file
View File

@@ -0,0 +1,37 @@
/*
Wrapper is a type of middleware for the go-micro client. It allows
the client to be "wrapped" so that requests and responses can be intercepted
to perform extra requirements such as auth, tracing, monitoring, logging, etc.
Example usage:
import (
"log"
"github.com/micro/go-micro/client"
)
type LogWrapper struct {
client.Client
}
func (l *LogWrapper) Call(ctx context.Context, req Request, rsp interface{}) error {
log.Println("Making request to service " + req.Service() + " method " + req.Method())
return w.Client.Call(ctx, req, rsp)
}
func Wrapper(c client.Client) client.Client {
return &LogWrapper{c}
}
func main() {
c := client.NewClient(client.Wrap(Wrapper))
}
*/
package client
// Wrapper wraps a client and returns a client
type Wrapper func(Client) Client