mirror of
https://github.com/linka-cloud/grpc.git
synced 2025-06-22 17:22:26 +00:00
add grpc-proxy (github.com/mwitkow/grpc-proxy)
Signed-off-by: Adphi <philippe.adrien.nousse@gmail.com>
This commit is contained in:
25
proxy/director.go
Normal file
25
proxy/director.go
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright 2017 Michal Witkowski. All Rights Reserved.
|
||||
// See LICENSE for licensing terms.
|
||||
|
||||
package proxy
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
// StreamDirector returns a gRPC ClientConn to be used to forward the call to.
|
||||
//
|
||||
// The presence of the `Context` allows for rich filtering, e.g. based on Metadata (headers).
|
||||
// If no handling is meant to be done, a `codes.NotImplemented` gRPC error should be returned.
|
||||
//
|
||||
// The context returned from this function should be the context for the *outgoing* (to backend) call. In case you want
|
||||
// to forward any Metadata between the inbound request and outbound requests, you should do it manually. However, you
|
||||
// *must* propagate the cancel function (`context.WithCancel`) of the inbound context to the one returned.
|
||||
//
|
||||
// It is worth noting that the StreamDirector will be fired *after* all server-side stream interceptors
|
||||
// are invoked. So decisions around authorization, monitoring etc. are better to be handled there.
|
||||
//
|
||||
// See the rather rich example.
|
||||
type StreamDirector func(ctx context.Context, fullMethodName string) (context.Context, grpc.ClientConnInterface, error)
|
Reference in New Issue
Block a user