grpc

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 9, 2020 License: MIT Imports: 6 Imported by: 2

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func ErrorResponseEncoder added in v0.6.0

func ErrorResponseEncoder(
	encoder kitgrpc.EncodeResponseFunc,
	errorEncoder EncodeErrorResponseFunc,
) kitgrpc.EncodeResponseFunc

ErrorResponseEncoder encodes the passed response object to a gRPC response or error.

func IsGRPCError added in v0.7.1

func IsGRPCError(err error) bool

IsGRPCError checks if an error is already encoded as a gRPC status.

func ServerOptions added in v0.2.0

func ServerOptions(options []grpc.ServerOption) grpc.ServerOption

ServerOptions collects a list of ServerOptions into a single option. Useful to avoid variadic hells when passing lists of options around.

Types

type EncodeErrorResponseFunc added in v0.6.0

type EncodeErrorResponseFunc func(context.Context, error) error

EncodeErrorResponseFunc transforms the passed error to a gRPC code error. It's designed to be used in gRPC servers, for server-side endpoints.

func NewDefaultStatusErrorResponseEncoder added in v0.7.0

func NewDefaultStatusErrorResponseEncoder() EncodeErrorResponseFunc

NewDefaultStatusErrorResponseEncoder returns an error response encoder that encodes errors as gRPC Status errors.

The returned encoder encodes every error as Internal error.

func NewStatusErrorResponseEncoder added in v0.7.0

func NewStatusErrorResponseEncoder(statusConverter StatusConverter) EncodeErrorResponseFunc

NewStatusErrorResponseEncoder returns an error response encoder that encodes errors as gRPC Status errors.

type ErrorMatcher added in v0.7.0

type ErrorMatcher interface {
	// MatchError evaluates the predefined set of conditions for err.
	MatchError(err error) bool
}

ErrorMatcher checks if an error matches a predefined set of conditions.

type ErrorMatcherFunc added in v0.7.0

type ErrorMatcherFunc func(err error) bool

ErrorMatcherFunc turns a plain function into an ErrorMatcher if it's definition matches the interface.

func (ErrorMatcherFunc) MatchError added in v0.7.0

func (fn ErrorMatcherFunc) MatchError(err error) bool

MatchError calls the underlying function to check if err matches a certain condition.

type ServerFactory

type ServerFactory interface {
	// NewServer constructs a new server, which wraps the provided endpoint and implements the grpc.Handler interface.
	NewServer(
		e endpoint.Endpoint,
		dec grpc.DecodeRequestFunc,
		enc grpc.EncodeResponseFunc,
		options ...grpc.ServerOption,
	) *grpc.Server
}

ServerFactory constructs a new server, which wraps the provided endpoint and implements the grpc.Handler interface.

func NewServerFactory

func NewServerFactory(options ...grpc.ServerOption) ServerFactory

NewServerFactory returns a new ServerFactory.

type StatusCodeConverter added in v0.7.0

type StatusCodeConverter interface {
	// NewStatusWithCode creates a new gRPC code with a code from an error.
	NewStatusWithCode(ctx context.Context, code codes.Code, err error) *status.Status
}

StatusCodeConverter creates a new gRPC code with a code from an error.

type StatusCodeMatcher added in v0.7.0

type StatusCodeMatcher interface {
	ErrorMatcher

	// Code returns the gRPC code code.
	Code() codes.Code
}

StatusCodeMatcher matches an error and returns the appropriate code code for it.

func NewStatusCodeMatcher added in v0.7.0

func NewStatusCodeMatcher(code codes.Code, matcher ErrorMatcher) StatusCodeMatcher

NewStatusCodeMatcher returns a new StatusCodeMatcher.

type StatusConverter added in v0.7.0

type StatusConverter interface {
	// NewStatus creates a new gRPC Status from an error.
	NewStatus(ctx context.Context, err error) *status.Status
}

StatusConverter creates a new gRPC Status from an error.

func NewDefaultStatusConverter added in v0.7.0

func NewDefaultStatusConverter() StatusConverter

NewDefaultStatusConverter returns a new StatusConverter implementation with default configuration.

func NewStatusConverter added in v0.7.0

func NewStatusConverter(config StatusConverterConfig) StatusConverter

NewStatusConverter returns a new StatusConverter implementation.

Example
statusConverter := NewStatusConverter(StatusConverterConfig{
	Matchers: []StatusMatcher{
		NewStatusCodeMatcher(codes.NotFound, ErrorMatcherFunc(func(err error) bool {
			return err.Error() == "not found"
		})),
	},
})

err := errors.New("not found")

s := statusConverter.NewStatus(context.Background(), err)

fmt.Println(s.Code(), s.Message())
Output:

NotFound not found

type StatusConverterConfig added in v0.7.0

type StatusConverterConfig struct {
	// Matchers are used to match errors and create gRPC statuses.
	// If no matchers match the error (or no matchers are configured) a fallback code is created/returned.
	//
	// If a matcher also implements StatusConverter it is used instead of the builtin StatusConverter
	// for creating the code.
	//
	// If a matchers also implements StatusCodeMatcher
	// the builtin StatusCodeConverter is used for creating the code.
	Matchers []StatusMatcher

	// Status converters used for converting errors to gRPC statuses.
	StatusConverter     StatusConverter
	StatusCodeConverter StatusCodeConverter
}

StatusConverterConfig configures the StatusConverter implementation.

type StatusMatcher added in v0.7.0

type StatusMatcher interface {
	ErrorMatcher
}

StatusMatcher matches an error. It is an alias to the ErrorMatcher interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL