Documentation ¶
Overview ¶
Package endpoint defines an abstraction for RPCs.
Endpoints are a fundamental building block for many Go kit components. Endpoints are implemented by servers, and called by clients.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ErrBadCast = errors.New("bad cast")
ErrBadCast indicates an unexpected concrete request or response struct was received from an endpoint.
var ErrContextCanceled = errors.New("context canceled")
ErrContextCanceled indicates the request context was canceled.
Functions ¶
Types ¶
type Endpoint ¶
Endpoint is the fundamental building block of servers and clients. It represents a single RPC method.
type Middleware ¶
Middleware is a chainable behavior modifier for endpoints.
func Chain ¶
func Chain(outer Middleware, others ...Middleware) Middleware
Chain is a helper function for composing middlewares. Requests will traverse them in the order they're declared. That is, the first middleware is treated as the outermost middleware.
Example ¶
package main import ( "fmt" "golang.org/x/net/context" "github.com/go-kit/kit/endpoint" ) func main() { e := endpoint.Chain( annotate("first"), annotate("second"), annotate("third"), )(myEndpoint) if _, err := e(ctx, req); err != nil { panic(err) } } var ( ctx = context.Background() req = struct{}{} ) func annotate(s string) endpoint.Middleware { return func(next endpoint.Endpoint) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { fmt.Println(s, "pre") defer fmt.Println(s, "post") return next(ctx, request) } } } func myEndpoint(context.Context, interface{}) (interface{}, error) { fmt.Println("my endpoint!") return struct{}{}, nil }
Output: first pre second pre third pre my endpoint! third post second post first post