Humanize serialization of version vectors

This commit is contained in:
Jakob Borg 2015-12-22 21:52:48 +01:00
parent aaa75a32a5
commit 6f95afdc59

View File

@ -10,6 +10,8 @@ import (
"bytes" "bytes"
"compress/gzip" "compress/gzip"
"crypto/tls" "crypto/tls"
"encoding/base32"
"encoding/binary"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
@ -1138,8 +1140,11 @@ type jsonVersionVector protocol.Vector
func (v jsonVersionVector) MarshalJSON() ([]byte, error) { func (v jsonVersionVector) MarshalJSON() ([]byte, error) {
res := make([]string, len(v)) res := make([]string, len(v))
bs := make([]byte, 8)
for i, c := range v { for i, c := range v {
res[i] = fmt.Sprintf("%d:%d", c.ID, c.Value) binary.BigEndian.PutUint64(bs, c.ID)
id := base32.StdEncoding.EncodeToString(bs)
res[i] = fmt.Sprintf("%s:%d", id[:7], c.Value)
} }
return json.Marshal(res) return json.Marshal(res)
} }