in ubjson/parse.go [729:766]
func (p *Parser) collect(b []byte, count int) ([]byte, []byte) {
if len(p.buffer) > 0 {
delta := count - len(p.buffer)
if delta > 0 {
N := delta
complete := true
if N > len(b) {
complete = false
N = len(b)
}
p.buffer = append(p.buffer, b[:N]...)
if !complete {
return nil, nil
}
// advance read buffer
b = b[N:]
}
if len(p.buffer) >= count {
tmp := p.buffer[:count]
if len(p.buffer) == count {
p.buffer = p.buffer0[:0]
} else {
p.buffer = p.buffer[count:]
}
return b, tmp
}
}
if len(b) >= count {
return b[count:], b[:count]
}
p.buffer = append(p.buffer, b...)
return nil, nil
}