mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2024-12-27 13:13:10 +00:00
28 lines
647 B
Cheetah
28 lines
647 B
Cheetah
|
{{.Label}}:
|
||
|
switch timeout{{.Sfx}} := z.EncBasicHandle().ChanRecvTimeout; {
|
||
|
case timeout{{.Sfx}} == 0: // only consume available
|
||
|
for {
|
||
|
select {
|
||
|
case b{{.Sfx}} := <-{{.Chan}}:
|
||
|
{{ .Slice }} = append({{.Slice}}, b{{.Sfx}})
|
||
|
default:
|
||
|
break {{.Label}}
|
||
|
}
|
||
|
}
|
||
|
case timeout{{.Sfx}} > 0: // consume until timeout
|
||
|
tt{{.Sfx}} := time.NewTimer(timeout{{.Sfx}})
|
||
|
for {
|
||
|
select {
|
||
|
case b{{.Sfx}} := <-{{.Chan}}:
|
||
|
{{.Slice}} = append({{.Slice}}, b{{.Sfx}})
|
||
|
case <-tt{{.Sfx}}.C:
|
||
|
// close(tt.C)
|
||
|
break {{.Label}}
|
||
|
}
|
||
|
}
|
||
|
default: // consume until close
|
||
|
for b{{.Sfx}} := range {{.Chan}} {
|
||
|
{{.Slice}} = append({{.Slice}}, b{{.Sfx}})
|
||
|
}
|
||
|
}
|