Documentation ¶
Index ¶
- Constants
- Variables
- func TryAndRetry[T any](strategy RetryStrategy, do func() (result T, mustRetry bool)) (result T)
- func TryAndRetryE[T any](strategy RetryStrategy, do func() (result T, err error, mustRetry bool)) (result T, err error)
- type ConnectionFactory
- type Degradable
- type Dialer
- type IDManager
- type Multiplexer
- type Reactor
- type ResilientReactor
- type RetryDialer
- type RetryStrategy
- type SequentialIDManager
- type SimpleReactor
- type TCPDialer
- type TLSDialer
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 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) Shutdown ¶
func (m *Multiplexer) Shutdown()
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
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
Click to show internal directories.
Click to hide internal directories.