/* 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