multi

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Nov 1, 2023 License: AGPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KConnectionID = "connID"
	KRequestID    = "reqID"
	KError        = "error"
)

Variables

View Source
var DefaultTimeout = 10 * time.Second
View Source
var ErrMustRetry = errors.New("must retry")
View Source
var ErrResponseTimeout = errors.New("timeout while waiting for response")
View Source
var ReactorDegraded = errors.New("reactor is degraded")

Functions

func TryAndRetry added in v0.0.2

func TryAndRetry[T any](strategy RetryStrategy, do func() (result T, mustRetry bool)) (result T)

func TryAndRetryE added in v0.0.2

func TryAndRetryE[T any](strategy RetryStrategy, do func() (result T, err error, mustRetry bool)) (result T, err error)

Types

type ConnectionFactory added in v0.0.2

type ConnectionFactory func(target string) (io.ReadWriteCloser, error)

func SimpleTCPDialer added in v0.0.2

func SimpleTCPDialer() ConnectionFactory

func TCPDialerWithRetry added in v0.0.2

func TCPDialerWithRetry(dialer ConnectionFactory, retryStrategy RetryStrategy) ConnectionFactory

type Degradable added in v0.0.2

type Degradable[T any] struct {
	// contains filtered or unexported fields
}

Degradable starts degraded

func (*Degradable[T]) Reset added in v0.0.2

func (d *Degradable[T]) Reset(value T)

func (*Degradable[T]) SetDegraded added in v0.0.2

func (d *Degradable[T]) SetDegraded()

func (*Degradable[T]) Value added in v0.0.2

func (d *Degradable[T]) Value() (T, bool)

Value returns the value and a boolean indicating if it is healthy=true or degraded=false

func (*Degradable[T]) WhenDegraded added in v0.0.2

func (d *Degradable[T]) WhenDegraded() <-chan struct{}

type Dialer added in v0.0.3

type Dialer interface {
	DialContext(ctx context.Context) (io.ReadWriteCloser, error)
}

type IDManager added in v0.0.2

type IDManager interface {
	IDLength() int
	NewID() ([]byte, <-chan []byte)
	FindChannel(id []byte) (chan<- []byte, bool)
	CloseAllChannels()
}

type Multiplexer

type Multiplexer struct {
	Logger  hsmlib.Logger
	Timeout time.Duration
	Verbose bool
	// contains filtered or unexported fields
}

func (*Multiplexer) HandleConnection

func (m *Multiplexer) HandleConnection(in hsmlib.PacketSender, packet hsmlib.Packet) error

func (*Multiplexer) Run

func (m *Multiplexer) Run(listenAddr string, dialer Dialer) error

func (*Multiplexer) Shutdown

func (m *Multiplexer) Shutdown()

type Reactor added in v0.0.2

type Reactor interface {
	Post(data []byte) ([]byte, error)
	Stop()
	Wait()
}

type ResilientReactor added in v0.0.3

type ResilientReactor struct {
	Logger            hsmlib.Logger
	RetryStrategy     retry.Strategy
	ConnectionTimeout time.Duration
	// contains filtered or unexported fields
}

func (*ResilientReactor) Post added in v0.0.3

func (self *ResilientReactor) Post(data []byte) ([]byte, error)

func (*ResilientReactor) Start added in v0.0.3

func (r *ResilientReactor) Start(dialer Dialer) error

func (*ResilientReactor) Stop added in v0.0.3

func (self *ResilientReactor) Stop()

func (*ResilientReactor) Wait added in v0.0.3

func (self *ResilientReactor) Wait()

type RetryDialer added in v0.0.3

type RetryDialer struct {
	InnerDialer   Dialer
	RetryStrategy retry.Strategy
}

func (RetryDialer) Dial added in v0.0.3

func (self RetryDialer) Dial(ctx context.Context) (io.ReadWriteCloser, error)

type RetryStrategy added in v0.0.2

type RetryStrategy interface {
	Try(do func() bool)
}

func SimpleDelayRetryStrategy added in v0.0.2

func SimpleDelayRetryStrategy(delay time.Duration) RetryStrategy

type SequentialIDManager added in v0.0.2

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

func (*SequentialIDManager) CloseAllChannels added in v0.0.2

func (m *SequentialIDManager) CloseAllChannels()

func (*SequentialIDManager) FindChannel added in v0.0.2

func (m *SequentialIDManager) FindChannel(id []byte) (chan<- []byte, bool)

func (*SequentialIDManager) IDLength added in v0.0.2

func (m *SequentialIDManager) IDLength() int

func (*SequentialIDManager) NewID added in v0.0.2

func (m *SequentialIDManager) NewID() ([]byte, <-chan []byte)

type SimpleReactor added in v0.0.3

type SimpleReactor struct {
	IDManager IDManager
	Logger    hsmlib.Logger
	Timeout   time.Duration
	Target    hsmlib.PacketStream
	// contains filtered or unexported fields
}

func (*SimpleReactor) Post added in v0.0.3

func (r *SimpleReactor) Post(data []byte) ([]byte, error)

func (*SimpleReactor) Start added in v0.0.3

func (r *SimpleReactor) Start() error

func (*SimpleReactor) Stop added in v0.0.3

func (r *SimpleReactor) Stop()

func (*SimpleReactor) Wait added in v0.0.3

func (r *SimpleReactor) Wait()

type TCPDialer added in v0.0.3

type TCPDialer struct {
	Address string
}

func (TCPDialer) DialContext added in v0.0.3

func (self TCPDialer) DialContext(ctx context.Context) (io.ReadWriteCloser, error)

type TLSDialer added in v0.0.3

type TLSDialer struct {
	Address   string
	TLSConfig *tls.Config
}

func (TLSDialer) DialContext added in v0.0.3

func (self TLSDialer) DialContext(ctx context.Context) (io.ReadWriteCloser, error)

Jump to

Keyboard shortcuts

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