gen-enc-chan.go.tmpl

 1{{.Label}}:
 2switch timeout{{.Sfx}} :=  z.EncBasicHandle().ChanRecvTimeout; {
 3case timeout{{.Sfx}} == 0: // only consume available
 4	for {
 5		select {
 6		case b{{.Sfx}} := <-{{.Chan}}:
 7			{{ .Slice }} = append({{.Slice}}, b{{.Sfx}})
 8		default:
 9			break {{.Label}}
10		}
11	}
12case timeout{{.Sfx}} > 0: // consume until timeout
13	tt{{.Sfx}} := time.NewTimer(timeout{{.Sfx}})
14	for {
15		select {
16		case b{{.Sfx}} := <-{{.Chan}}:
17			{{.Slice}} = append({{.Slice}}, b{{.Sfx}})
18		case <-tt{{.Sfx}}.C:
19			// close(tt.C)
20			break {{.Label}}
21		}
22	}
23default: // consume until close
24	for b{{.Sfx}} := range {{.Chan}} {
25		{{.Slice}} = append({{.Slice}}, b{{.Sfx}})
26	}
27}