rpc

package
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Dec 23, 2020 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package rpc implements rpc engine.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NopSend

func NopSend(ctx context.Context, msgID int64, seqNo int32, in bin.Encoder) error

NopSend does nothing.

Types

type Clock added in v0.13.0

type Clock interface {
	After(d time.Duration) <-chan time.Time
}

Clock abstracts temporal effects.

type Config

type Config struct {
	RetryInterval time.Duration
	MaxRetries    int
	Logger        *zap.Logger
	Clock         Clock
}

Config of rpc engine.

type Engine

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

Engine handles RPC requests.

func New

func New(send Send, cfg Config) *Engine

New creates new rpc Engine.

func (*Engine) Do

func (e *Engine) Do(ctx context.Context, req Request) error

Do sends request to server and blocks until response is received, performing multiple retries if needed.

func (*Engine) NotifyAcks

func (e *Engine) NotifyAcks(ids []int64)

NotifyAcks notifies engine about received acknowledgements.

func (*Engine) NotifyError

func (e *Engine) NotifyError(msgID int64, rpcErr error)

NotifyError notifies engine about received RPC error.

func (*Engine) NotifyResult

func (e *Engine) NotifyResult(msgID int64, b *bin.Buffer) error

NotifyResult notifies engine about received RPC response.

type Request

type Request struct {
	ID       int64
	Sequence int32
	Input    bin.Encoder
	Output   bin.Decoder
}

Request represents client RPC request.

type RetryLimitReachedErr added in v0.13.0

type RetryLimitReachedErr struct {
	Retries int
}

RetryLimitReachedErr means that server does not acknowledge request after multiple retries.

func (*RetryLimitReachedErr) Error added in v0.13.0

func (r *RetryLimitReachedErr) Error() string

func (*RetryLimitReachedErr) Is added in v0.13.0

func (r *RetryLimitReachedErr) Is(err error) bool

Is reports whether err is RetryLimitReachedErr.

type Send

type Send func(ctx context.Context, msgID int64, seqNo int32, in bin.Encoder) error

Send is a function that sends requests to the server.

Jump to

Keyboard shortcuts

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