common_func.go 389 B

123456789101112131415161718192021
  1. package nodes
  2. import "fmt"
  3. func Broadcast(outputs map[string]chan<- interface{}, val interface{}) (err error) {
  4. for n, out := range outputs {
  5. select {
  6. case out <- val:
  7. //All ok
  8. default: //TODO channel full strategy?
  9. if err != nil {
  10. err = fmt.Errorf("%v;channel full for %s", err, n)
  11. } else {
  12. err = fmt.Errorf("channel full for %s", n)
  13. }
  14. }
  15. }
  16. return err
  17. }