Documentation ¶
Overview ¶
Package client is an interface for an RPC client
Index ¶
- Constants
- Variables
- func NewContext(ctx context.Context, c Client) context.Context
- func RetryAlways(ctx context.Context, req Request, retryCount int, err error) (bool, error)
- func RetryOnError(ctx context.Context, req Request, retryCount int, err error) (bool, error)
- type BackoffFunc
- type CallFunc
- type CallOption
- type CallOptions
- type CallWrapper
- type Client
- type Message
- type MessageOption
- type MessageOptions
- type Option
- type Options
- type PublishOption
- type PublishOptions
- type Request
- type RequestOption
- type RequestOptions
- type Response
- type RetryFunc
- type Router
- type Wrapper
Constants ¶
const DefaultContentType = "application/json"
Variables ¶
var ( // DefaultBackoff is the default backoff function for retries DefaultBackoff = exponentialBackoff // DefaultRetry is the default check-for-retry function for retries DefaultRetry = RetryOnError // DefaultRetries is the default number of times a request is tried DefaultRetries = 1 // DefaultRequestTimeout is the default request timeout DefaultRequestTimeout = time.Second * 5 // DefaultPoolSize sets the connection pool size DefaultPoolSize = 100 // DefaultPoolTTL sets the connection pool ttl DefaultPoolTTL = time.Minute // DefaultDialTimeout is the default dial timeout DefaultDialTimeout = time.Second * 5 )
Functions ¶
func RetryAlways ¶
RetryAlways always retry on error
Types ¶
type BackoffFunc ¶
type CallFunc ¶
type CallFunc func(ctx context.Context, req Request, rsp interface{}, opts CallOptions) error
CallFunc represents the individual call func
type CallOption ¶
type CallOption func(*CallOptions)
CallOption used by Call
func WithAddress ¶
func WithAddress(a ...string) CallOption
WithAddress sets the remote addresses to use rather than using service discovery
func WithDialTimeout ¶
func WithDialTimeout(d time.Duration) CallOption
WithDialTimeout is a CallOption which overrides that which set in Options.CallOptions
func WithRequestTimeout ¶
func WithRequestTimeout(d time.Duration) CallOption
WithRequestTimeout is a CallOption which overrides that which set in Options.CallOptions
type CallOptions ¶
type CallOptions struct { // Address of remote hosts Address []string // Backoff func Backoff BackoffFunc // Check if retriable func Retry RetryFunc // Transport Dial Timeout DialTimeout time.Duration // Number of Call attempts Retries int // Request/Response timeout RequestTimeout time.Duration // Middleware for low level call func CallWrappers []CallWrapper // Other options for implementations of the interface // can be stored in a context Context context.Context }
type CallWrapper ¶
CallWrapper is a low level wrapper for the CallFunc
type Client ¶
type Client interface { Init(...Option) error Options() Options SetAService() error NewMessage(topic string, msg interface{}, opts ...MessageOption) Message NewRequest(service, endpoint string, req interface{}, reqOpts ...RequestOption) Request Call(ctx context.Context, req Request, rsp interface{}, opts ...CallOption) error Publish(ctx context.Context, msg Message, opts ...PublishOption) error String() string }
Client is the interface used to make requests to services. It supports Request/Response via Transport and Publishing via the Broker. It also supports bidirectional streaming of requests.
type MessageOptions ¶
type MessageOptions struct {
ContentType string
}
type Option ¶
type Option func(*Options)
Option used by the Client
func WrapCall ¶
func WrapCall(cw ...CallWrapper) Option
Adds a Wrapper to the list of CallFunc wrappers
type Options ¶
type Options struct { // Used to select codec ContentType string // Plugged interfaces Codecs map[string]codec.NewCodec // Connection Pool PoolSize int PoolTTL time.Duration // Middleware for client Wrappers []Wrapper // Default Call Options CallOptions CallOptions // Other options for implementations of the interface // can be stored in a context Context context.Context }
func NewOptions ¶
type PublishOptions ¶
type Request ¶
type Request interface { // The service to call Service() string // The action to take Method() string // The endpoint to invoke Endpoint() string // The content type ContentType() string // The unencoded request body Body() interface{} // Write to the encoded request writer. This is nil before a call is made Codec() codec.Writer }
Request is the interface for a synchronous request used by Call or Stream
type RequestOption ¶
type RequestOption func(*RequestOptions)
RequestOption used by NewRequest
func WithContentType ¶
func WithContentType(ct string) RequestOption
type RequestOptions ¶
type Response ¶
type Response interface { // Read the response Codec() codec.Reader // read the header Header() map[string]string // Read the undecoded response Read() ([]byte, error) }
Response is the response received from a service
type RetryFunc ¶
note that returning either false or a non-nil error will result in the call not being retried