mirror of
https://github.com/go-micro/go-micro.git
synced 2024-12-18 08:26:38 +02:00
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
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
|