diff --git a/initiator/config.go b/initiator/config.go index 5d0c11d..35810c4 100644 --- a/initiator/config.go +++ b/initiator/config.go @@ -7,7 +7,7 @@ import ( // Types -type WorkerFactory func(id string, stop <-chan struct{}) Worker +type WorkerFactory func(id string, stop <-chan struct{}) (*Worker, error) // Pool Config diff --git a/initiator/pool.go b/initiator/pool.go index 5eb86a4..d4e1d2f 100644 --- a/initiator/pool.go +++ b/initiator/pool.go @@ -67,6 +67,13 @@ func NewPool(config *PoolConfig, logger *slog.Logger) (*Pool, error) { config = GetDefaultPoolConfig() } + // if a custom factory is supplied, config.WorkerConfig is not used + if config.WorkerFactory == nil { + config.WorkerFactory = func(id string, stop <-chan struct{}) (*Worker, error) { + return NewWorker(id, stop, config.WorkerConfig) + } + } + if err := ValidatePoolConfig(config); err != nil { return nil, err } diff --git a/initiator/worker.go b/initiator/worker.go index 3eaa12b..0fcbcb9 100644 --- a/initiator/worker.go +++ b/initiator/worker.go @@ -21,6 +21,15 @@ func NewWorker( config *WorkerConfig, ) (*Worker, error) { + if config == nil { + config = GetDefaultWorkerConfig() + } + + err := ValidateWorkerConfig(config) + if err != nil { + return nil, err + } + w := &Worker{ id: id, stop: stop,