Path: blob/main/vendor/github.com/sagikazarmark/locafero/internal/queue/eager.go
2893 views
package queue12import "sync"34// NewEager creates a new eager queue.5func NewEager[T any]() Queue[T] {6return &Eager[T]{}7}89// Eager is a queue that processes items eagerly.10type Eager[T any] struct {11results []T12error error1314mu sync.Mutex15}1617// Add implements the [Queue] interface.18func (p *Eager[T]) Add(fn func() (T, error)) {19p.mu.Lock()20defer p.mu.Unlock()2122// Return early if there's an error23if p.error != nil {24return25}2627result, err := fn()28if err != nil {29p.error = err3031return32}3334p.results = append(p.results, result)35}3637// Wait implements the [Queue] interface.38func (p *Eager[T]) Wait() ([]T, error) {39p.mu.Lock()40defer p.mu.Unlock()4142if p.error != nil {43return nil, p.error44}4546results := p.results4748// Reset results for reuse49p.results = nil5051return results, nil52}535455