Files
marketlabtest/worker/worker.go
2024-05-30 19:42:26 +03:00

52 lines
710 B
Go

package worker
import (
"context"
"sort"
"sync"
"go.uber.org/zap"
)
func NewWorker(in <-chan [10]int, out chan<- [3]int, log *zap.Logger) *Worker {
return &Worker{
in: in,
out: out,
log: log,
}
}
type Worker struct {
in <-chan [10]int
out chan<- [3]int
log *zap.Logger
}
func (w *Worker) Start(ctx context.Context, wg *sync.WaitGroup) {
defer wg.Done()
for {
select {
case <-ctx.Done():
return
case m, ok := <-w.in:
if !ok {
return
}
w.out <- w.findMax(m)
}
}
}
func (w *Worker) findMax(input [10]int) [3]int {
sort.Ints(input[:])
res := [3]int(input[7:])
w.log.Debug("new data", zap.Ints("input", input[:]), zap.Ints("output", res[:]))
return res
}