31 lines
807 B
Go
31 lines
807 B
Go
package distribute
|
|
|
|
import (
|
|
"context"
|
|
"github.com/volker-raschek/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
|
|
}
|