PKGBUILD/pkg/internal/distribute/distribute.go

31 lines
802 B
Go
Raw Normal View History

package distribute
import (
"context"
"github.com/go-flucky/flucky/pkg/types"
)
func MeasuredValues(ctx context.Context, channels int, inputChannel <-chan *types.MeasuredValue) []chan *types.MeasuredValue {
outputChannels := make([]chan *types.MeasuredValue, channels)
for i := 0; i <= channels; i++ {
outputChannel := make(chan *types.MeasuredValue)
outputChannels = append(outputChannels, outputChannel)
}
go func(ctx context.Context, inputChannel <-chan *types.MeasuredValue, outputChannels []chan *types.MeasuredValue) {
for {
select {
case <-ctx.Done():
return
case measuredValue, _ := <-inputChannel:
for _, outputChannel := range outputChannels {
outputChannel <- measuredValue
}
}
}
}(ctx, inputChannel, outputChannels)
return outputChannels
}