kit: github.com/go-kit/kit/transport/grpc Index | Files | Directories

package grpc

import "github.com/go-kit/kit/transport/grpc"

Package grpc provides a gRPC binding for endpoints.

Index

Package Files

client.go doc.go encode_decode.go request_response_funcs.go server.go

func EncodeKeyValue Uses

func EncodeKeyValue(key, val string) (string, string)

EncodeKeyValue sanitizes a key-value pair for use in gRPC metadata headers.

type Client Uses

type Client struct {
    // contains filtered or unexported fields
}

Client wraps a gRPC connection and provides a method that implements endpoint.Endpoint.

func NewClient Uses

func NewClient(
    cc *grpc.ClientConn,
    serviceName string,
    method string,
    enc EncodeRequestFunc,
    dec DecodeResponseFunc,
    grpcReply interface{},
    options ...ClientOption,
) *Client

NewClient constructs a usable Client for a single remote endpoint. Pass an zero-value protobuf message of the RPC response type as the grpcReply argument.

func (Client) Endpoint Uses

func (c Client) Endpoint() endpoint.Endpoint

Endpoint returns a usable endpoint that will invoke the gRPC specified by the client.

type ClientOption Uses

type ClientOption func(*Client)

ClientOption sets an optional parameter for clients.

func ClientAfter Uses

func ClientAfter(after ...ClientResponseFunc) ClientOption

ClientAfter sets the ClientResponseFuncs that are applied to the incoming gRPC response prior to it being decoded. This is useful for obtaining response metadata and adding onto the context prior to decoding.

func ClientBefore Uses

func ClientBefore(before ...ClientRequestFunc) ClientOption

ClientBefore sets the RequestFuncs that are applied to the outgoing gRPC request before it's invoked.

type ClientRequestFunc Uses

type ClientRequestFunc func(context.Context, *metadata.MD) context.Context

ClientRequestFunc may take information from context and use it to construct metadata headers to be transported to the server. ClientRequestFuncs are executed after creating the request but prior to sending the gRPC request to the server.

func SetRequestHeader Uses

func SetRequestHeader(key, val string) ClientRequestFunc

SetRequestHeader returns a ClientRequestFunc that sets the specified metadata key-value pair.

type ClientResponseFunc Uses

type ClientResponseFunc func(ctx context.Context, header metadata.MD, trailer metadata.MD) context.Context

ClientResponseFunc may take information from a gRPC metadata header and/or trailer and make the responses available for consumption. ClientResponseFuncs are only executed in clients, after a request has been made, but prior to it being decoded.

type DecodeRequestFunc Uses

type DecodeRequestFunc func(context.Context, interface{}) (request interface{}, err error)

DecodeRequestFunc extracts a user-domain request object from a gRPC request. It's designed to be used in gRPC servers, for server-side endpoints. One straightforward DecodeRequestFunc could be something that decodes from the gRPC request message to the concrete request type.

type DecodeResponseFunc Uses

type DecodeResponseFunc func(context.Context, interface{}) (response interface{}, err error)

DecodeResponseFunc extracts a user-domain response object from a gRPC response object. It's designed to be used in gRPC clients, for client-side endpoints. One straightforward DecodeResponseFunc could be something that decodes from the gRPC response message to the concrete response type.

type EncodeRequestFunc Uses

type EncodeRequestFunc func(context.Context, interface{}) (request interface{}, err error)

EncodeRequestFunc encodes the passed request object into the gRPC request object. It's designed to be used in gRPC clients, for client-side endpoints. One straightforward EncodeRequestFunc could something that encodes the object directly to the gRPC request message.

type EncodeResponseFunc Uses

type EncodeResponseFunc func(context.Context, interface{}) (response interface{}, err error)

EncodeResponseFunc encodes the passed response object to the gRPC response message. It's designed to be used in gRPC servers, for server-side endpoints. One straightforward EncodeResponseFunc could be something that encodes the object directly to the gRPC response message.

type Handler Uses

type Handler interface {
    ServeGRPC(ctx oldcontext.Context, request interface{}) (oldcontext.Context, interface{}, error)
}

Handler which should be called from the gRPC binding of the service implementation. The incoming request parameter, and returned response parameter, are both gRPC types, not user-domain.

type Server Uses

type Server struct {
    // contains filtered or unexported fields
}

Server wraps an endpoint and implements grpc.Handler.

func NewServer Uses

func NewServer(
    e endpoint.Endpoint,
    dec DecodeRequestFunc,
    enc EncodeResponseFunc,
    options ...ServerOption,
) *Server

NewServer constructs a new server, which implements wraps the provided endpoint and implements the Handler interface. Consumers should write bindings that adapt the concrete gRPC methods from their compiled protobuf definitions to individual handlers. Request and response objects are from the caller business domain, not gRPC request and reply types.

func (Server) ServeGRPC Uses

func (s Server) ServeGRPC(ctx oldcontext.Context, req interface{}) (oldcontext.Context, interface{}, error)

ServeGRPC implements the Handler interface.

type ServerOption Uses

type ServerOption func(*Server)

ServerOption sets an optional parameter for servers.

func ServerAfter Uses

func ServerAfter(after ...ServerResponseFunc) ServerOption

ServerAfter functions are executed on the HTTP response writer after the endpoint is invoked, but before anything is written to the client.

func ServerBefore Uses

func ServerBefore(before ...ServerRequestFunc) ServerOption

ServerBefore functions are executed on the HTTP request object before the request is decoded.

func ServerErrorLogger Uses

func ServerErrorLogger(logger log.Logger) ServerOption

ServerErrorLogger is used to log non-terminal errors. By default, no errors are logged.

type ServerRequestFunc Uses

type ServerRequestFunc func(context.Context, metadata.MD) context.Context

ServerRequestFunc may take information from the received metadata header and use it to place items in the request scoped context. ServerRequestFuncs are executed prior to invoking the endpoint.

type ServerResponseFunc Uses

type ServerResponseFunc func(ctx context.Context, header *metadata.MD, trailer *metadata.MD) context.Context

ServerResponseFunc may take information from a request context and use it to manipulate the gRPC response metadata headers and trailers. ResponseFuncs are only executed in servers, after invoking the endpoint but prior to writing a response.

func SetResponseHeader Uses

func SetResponseHeader(key, val string) ServerResponseFunc

SetResponseHeader returns a ResponseFunc that sets the specified metadata key-value pair.

func SetResponseTrailer Uses

func SetResponseTrailer(key, val string) ServerResponseFunc

SetResponseTrailer returns a ResponseFunc that sets the specified metadata key-value pair.

Directories

PathSynopsis
_grpc_test
_grpc_test/pbPackage pb is a generated protocol buffer package.

Package grpc imports 10 packages (graph) and is imported by 41 packages. Updated 2017-08-07. Refresh now. Tools for package owners.