source ->w:ds:r -> task -> w:ds:r source close next ds' w chan ds close its own r chan task closes its own channel to next ds' w:ds
()
| 29 | // task closes its own channel to next ds' w:ds |
| 30 | |
| 31 | func (t *Task) RunTask() { |
| 32 | // println("start", t.Name()) |
| 33 | t.Step.Function(t) |
| 34 | for _, out := range t.Outputs { |
| 35 | // println(t.Name(), "close WriteChan of", out.Name()) |
| 36 | out.WriteChan.Close() |
| 37 | } |
| 38 | // println("stop", t.Name()) |
| 39 | } |
| 40 | |
| 41 | func (t *Task) Name() string { |
| 42 | var buffer bytes.Buffer |