mirror of
https://tangled.org/evan.jarrett.net/at-container-registry
synced 2026-04-20 16:40:29 +00:00
33 lines
539 B
Go
33 lines
539 B
Go
package db
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"io"
|
|
)
|
|
|
|
// LdWrite performs a length-delimited write.
|
|
// Writer stream gets Uvarint length then concatenated data.
|
|
func LdWrite(w io.Writer, d ...[]byte) (int64, error) {
|
|
var sum uint64
|
|
for _, s := range d {
|
|
sum += uint64(len(s))
|
|
}
|
|
|
|
buf := make([]byte, 8)
|
|
n := binary.PutUvarint(buf, sum)
|
|
nw, err := w.Write(buf[:n])
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
for _, s := range d {
|
|
onw, err := w.Write(s)
|
|
if err != nil {
|
|
return int64(nw), err
|
|
}
|
|
nw += onw
|
|
}
|
|
|
|
return int64(nw), nil
|
|
}
|