Files
go-honeybee/CONFIG.md
T

5.1 KiB

Configuration

All configuration uses option functions applied at construction time. Validation occurs at constructor time; a config value returned by a constructor is guaranteed to be valid. PoolConfig is the outermost scope and contains a WorkerConfig. WorkerConfig contains a ConnectionConfig and a RetryConfig. RetryConfig validation is skipped entirely when RetryDisabled is set on WorkerConfig, making the zero value of RetryConfig safe in that case. Logging is not config-controlled; pass an slog.Handler to pool, worker, and connection constructors directly.

Defaults

Scope Setting Default Disabled by Notes
Pool InboxBufferSize 256 — Must be positive
Pool EventsBufferSize 10 — Must be positive
Pool RequestHeader User-Agent: honeybee/0.1.0 WithRequestHeader(nil) Cloned per dial call
Worker KeepaliveTimeout 60s 0 0 disables keepalive
Worker ReconnectDelay 2s 0 0 means reconnect immediately
Worker Retry enabled WithRetryDisabled() Skips RetryConfig validation when disabled
Connection WriteTimeout 30s 0 Per-message write deadline
Connection PingInterval 20s 0 ±10% jitter applied per interval
Connection IncomingBufferSize 100 — Must be positive
Connection ErrorsBufferSize 10 — Must be positive
Retry MaxRetries 0 — 0 means infinite
Retry InitialDelay 1s — Must be positive
Retry MaxDelay 60s — Must be ≥ InitialDelay
Retry JitterFactor 0.2 0.0 Range [0.0, 1.0]

Pool Options

These are passed to honeybee.NewPoolConfig. Import git.wisehodl.dev/jay/go-honeybee.

WithInboxBufferSize(int) — sets the capacity of the shared inbox channel. Must be at least 1.

WithEventsBufferSize(int) — sets the capacity of the events channel. Must be at least 1.

WithWorkerConfig(WorkerConfig) — supplies the worker configuration applied to every peer the pool manages. Accepted by value.

WithRequestHeader(http.Header) — sets HTTP headers sent during the WebSocket handshake for every dial. The pool clones the header at option application time, so subsequent mutations to the original do not affect dial behavior. Pass nil to send no custom headers.

WithDialFunc(func(context.Context) (types.Socket, error)) — a per-call option passed to pool.Connect, not to NewPoolConfig. Overrides the pool's default dialer for a single connection. When provided, the pool's dialer and request header are not used for that connection.

Worker Options

These are passed to honeybee.NewWorkerConfig. Import git.wisehodl.dev/jay/go-honeybee.

WithConnectionConfig(transport.ConnectionConfig) — supplies the connection-level configuration (timeouts, buffers, ping interval). Import git.wisehodl.dev/jay/go-honeybee/transport to construct one.

WithRetryConfig(transport.RetryConfig) — supplies the retry policy used when dialing. Has no effect when WithRetryDisabled is also applied.

WithRetryDisabled() — disables dial retry. The first dial failure is terminal for that connection attempt.

WithKeepaliveTimeout(duration) — enables the keepalive mechanism. When no heartbeat is observed within this duration, the connection is closed and a new dial is attempted. Set to zero to disable. Must not be negative.

WithReconnectDelay(duration) — sets the wait between a disconnect and the next dial attempt. The default prevents tight reconnect loops against unavailable peers. Set to zero in tests or when immediate reconnection is required. Must not be negative.

Connection Options

These are passed to transport.NewConnectionConfig. Import git.wisehodl.dev/jay/go-honeybee/transport.

WithWriteTimeout(duration) — sets a per-message write deadline. Applied before every WriteMessage call. Set to zero to disable. Must not be negative.

WithPingInterval(duration) — sets the interval between WebSocket ping frames. A ±10% jitter is applied to each interval. Set to zero to disable pings entirely. Must not be negative.

WithIncomingBufferSize(int) — sets the capacity of the channel buffering inbound messages. Must be at least 1.

WithErrorsBufferSize(int) — sets the capacity of the channel carrying connection-level errors. Must be at least 1.

Retry Options

These are passed to transport.NewRetryConfig. Import git.wisehodl.dev/jay/go-honeybee/transport. The resulting RetryConfig is then passed to NewWorkerConfig via WithRetryConfig.

WithMaxRetries(int) — caps the number of dial attempts after the first. Zero means retry indefinitely. Must not be negative.

WithInitialDelay(duration) — sets the delay before the second attempt. The first retry is always immediate. Must be positive.

WithMaxDelay(duration) — caps the exponential backoff delay. Must be positive and at least as large as InitialDelay.

WithJitterFactor(float64) — adds randomization to each backoff delay. A value of 0.2 varies the delay within ±10% of the computed base. Range: 0.0 to 1.0.