...

Text file src/github.com/ugorji/go/codec/gen-enc-chan.go.tmpl

Documentation: github.com/ugorji/go/codec

     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}

View as plain text