package main

import (
	"context"
)

type worker interface {
	Run(context.Context)
}

type workerFromFunc struct {
	fn func(context.Context)
}

func newWorkerFromFunc(fn func(ctx context.Context)) worker {
	return &workerFromFunc{
		fn: fn,
	}
}

func (w *workerFromFunc) Run(ctx context.Context) {
	w.fn(ctx)
}

func startWorkers(c *cfg) {
	for _, wrk := range c.workers {
		c.wg.Add(1)

		go func(w worker) {
			w.Run(c.ctx)
			c.wg.Done()
		}(wrk)
	}
}