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 }