package client /* 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 client.Request, rsp interface{}, opts ...client.CallOption) 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)) } */ import ( "golang.org/x/net/context" ) // CallFunc represents the individual call func type CallFunc func(ctx context.Context, address string, req Request, rsp interface{}, opts CallOptions) error // StreamFunc represents the individual stream func type StreamFunc func(ctx context.Context, address string, req Request, opts CallOptions) (Streamer, error) // Wrapper wraps a client and returns a client type Wrapper func(Client) Client // StreamWrapper wraps a Stream and returns the equivalent type StreamWrapper func(Streamer) Streamer // CallFuncWrapper is a low level wrapper for the CallFunc type CallFuncWrapper func(CallFunc) CallFunc // StreamFuncWrapper is a low level wrapper for the StreamFunc type StreamFuncWrapper func(StreamFunc) StreamFunc