common_func.go 409 B

123456789101112131415161718192021
  1. package nodes
  2. import (
  3. "engine/xstream/api"
  4. )
  5. func Broadcast(outputs map[string]chan<- interface{}, val interface{}, ctx api.StreamContext) int {
  6. count := 0
  7. logger := ctx.GetLogger()
  8. for n, out := range outputs {
  9. select {
  10. case out <- val:
  11. count++
  12. default: //TODO channel full strategy?
  13. logger.Errorf("send output from %s to %s fail: channel full", ctx.GetOpId(), n)
  14. }
  15. }
  16. return count
  17. }