1package carstore
2
3import (
4 "encoding/binary"
5 "io"
6)
7
8// Length-delimited Write
9// Writer stream gets Uvarint length then concatenated data
10func LdWrite(w io.Writer, d ...[]byte) (int64, error) {
11 var sum uint64
12 for _, s := range d {
13 sum += uint64(len(s))
14 }
15
16 buf := make([]byte, 8)
17 n := binary.PutUvarint(buf, sum)
18 nw, err := w.Write(buf[:n])
19 if err != nil {
20 return 0, err
21 }
22
23 for _, s := range d {
24 onw, err := w.Write(s)
25 if err != nil {
26 return int64(nw), err
27 }
28 nw += onw
29 }
30
31 return int64(nw), nil
32}