Documentation
¶
Index ¶
- func ParseURL(urlStr string) (*url.URL, error)
- func SetConfig(config *Config, options ...ConfigOption) error
- func ValidateConfig(config *Config) error
- type CloseHandler
- type Config
- type ConfigOption
- func WithCloseHandler(handler CloseHandler) ConfigOption
- func WithReadTimeout(value time.Duration) ConfigOption
- func WithRetry() ConfigOption
- func WithRetryInitialDelay(value time.Duration) ConfigOption
- func WithRetryJitterFactor(value float64) ConfigOption
- func WithRetryMaxDelay(value time.Duration) ConfigOption
- func WithRetryMaxRetries(value int) ConfigOption
- func WithWriteTimeout(value time.Duration) ConfigOption
- type Connection
- type ConnectionState
- type Dialer
- type GorillaDialer
- type RetryConfig
- type RetryManager
- type Socket
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SetConfig ¶
func SetConfig(config *Config, options ...ConfigOption) error
func ValidateConfig ¶
Types ¶
type CloseHandler ¶
type Config ¶
type Config struct {
CloseHandler CloseHandler
ReadTimeout time.Duration
WriteTimeout time.Duration
Retry *RetryConfig
}
func GetDefaultConfig ¶
func GetDefaultConfig() *Config
func NewConfig ¶
func NewConfig(options ...ConfigOption) (*Config, error)
type ConfigOption ¶
func WithCloseHandler ¶
func WithCloseHandler(handler CloseHandler) ConfigOption
func WithReadTimeout ¶
func WithReadTimeout(value time.Duration) ConfigOption
When ReadTimeout is set to zero, read timeouts are disabled.
func WithRetry ¶
func WithRetry() ConfigOption
WithRetry enables retry with default parameters (infinite retries, 1s initial delay, 5s max delay, 0.5 jitter factor).
If passed after granular retry options (WithRetryMaxRetries, etc.), it will overwrite them. Use either WithRetry alone or the granular options; not both.
func WithRetryInitialDelay ¶
func WithRetryInitialDelay(value time.Duration) ConfigOption
func WithRetryJitterFactor ¶
func WithRetryJitterFactor(value float64) ConfigOption
func WithRetryMaxDelay ¶
func WithRetryMaxDelay(value time.Duration) ConfigOption
func WithRetryMaxRetries ¶
func WithRetryMaxRetries(value int) ConfigOption
func WithWriteTimeout ¶
func WithWriteTimeout(value time.Duration) ConfigOption
When WriteTimeout is set to zero, read timeouts are disabled.
type Connection ¶
type Connection struct {
// contains filtered or unexported fields
}
func NewConnection ¶
func NewConnectionFromSocket ¶
func (*Connection) Close ¶
func (c *Connection) Close() error
Close shuts down the connection and waits for goroutines to exit. If the underlying socket blocks indefinitely on read or write operations, Close will also block. This is expected behavior - hung sockets require external intervention (timeouts, process termination, etc).
func (*Connection) Connect ¶
func (c *Connection) Connect() error
func (*Connection) Errors ¶
func (c *Connection) Errors() <-chan error
func (*Connection) Incoming ¶
func (c *Connection) Incoming() <-chan []byte
func (*Connection) Send ¶
func (c *Connection) Send(data []byte) error
func (*Connection) State ¶
func (c *Connection) State() ConnectionState
type ConnectionState ¶
type ConnectionState int
const ( StateDisconnected ConnectionState = iota StateConnecting StateConnected StateClosed )
func (ConnectionState) String ¶
func (s ConnectionState) String() string
type Dialer ¶
type GorillaDialer ¶
func NewGorillaDialer ¶
func NewGorillaDialer() *GorillaDialer
type RetryConfig ¶
type RetryConfig struct {
MaxRetries int
InitialDelay time.Duration
MaxDelay time.Duration
JitterFactor float64
}
func GetDefaultRetryConfig ¶
func GetDefaultRetryConfig() *RetryConfig
type RetryManager ¶
type RetryManager struct {
// contains filtered or unexported fields
}
func NewRetryManager ¶
func NewRetryManager(config *RetryConfig) *RetryManager
func (*RetryManager) CalculateDelay ¶
func (r *RetryManager) CalculateDelay() time.Duration
func (*RetryManager) RecordRetry ¶
func (m *RetryManager) RecordRetry()
func (*RetryManager) RetryCount ¶
func (m *RetryManager) RetryCount() int
func (*RetryManager) ShouldRetry ¶
func (r *RetryManager) ShouldRetry() bool