Skip to content

Commit 0d6c7e3

Browse files
committed
update to latest cbor-gen strategiues
1 parent d53d20a commit 0d6c7e3

File tree

4 files changed

+54
-27
lines changed

4 files changed

+54
-27
lines changed

cbor_gen.go

Lines changed: 21 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ module github.com/ipfs/go-hamt-ipld
22

33
require (
44
github.com/ipfs/go-block-format v0.0.2
5-
github.com/ipfs/go-cid v0.0.4
5+
github.com/ipfs/go-cid v0.0.6-0.20200501230655-7c82f3b81c00
66
github.com/ipfs/go-ipld-cbor v0.0.4
77
github.com/ipfs/go-ipld-format v0.0.2 // indirect
88
github.com/spaolacci/murmur3 v1.1.0
9-
github.com/whyrusleeping/cbor-gen v0.0.0-20200501014322-5f9941ef88e0
9+
github.com/whyrusleeping/cbor-gen v0.0.0-20200504204219-64967432584d
1010
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb // indirect
1111
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
1212
)

go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ github.com/ipfs/go-cid v0.0.3 h1:UIAh32wymBpStoe83YCzwVQQ5Oy/H0FdxvUS6DJDzms=
1313
github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
1414
github.com/ipfs/go-cid v0.0.4 h1:UlfXKrZx1DjZoBhQHmNHLC1fK1dUJDN20Y28A7s+gJ8=
1515
github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M=
16+
github.com/ipfs/go-cid v0.0.6-0.20200501230655-7c82f3b81c00 h1:QN88Q0kT2QiDaLxpR/SDsqOBtNIEF/F3n96gSDUimkA=
17+
github.com/ipfs/go-cid v0.0.6-0.20200501230655-7c82f3b81c00/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog=
1618
github.com/ipfs/go-ipfs-util v0.0.1 h1:Wz9bL2wB2YBJqggkA4dD7oSmqB4cAnpNbGrlHJulv50=
1719
github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc=
1820
github.com/ipfs/go-ipld-cbor v0.0.4 h1:Aw3KPOKXjvrm6VjwJvFf1F1ekR/BH3jdof3Bk7OTiSA=
@@ -33,6 +35,8 @@ github.com/mr-tron/base58 v1.1.0 h1:Y51FGVJ91WBqCEabAi5OPUz38eAx8DakuAm5svLcsfQ=
3335
github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8=
3436
github.com/mr-tron/base58 v1.1.2 h1:ZEw4I2EgPKDJ2iEw0cNmLB3ROrEmkOtXIkaG7wZg+78=
3537
github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
38+
github.com/mr-tron/base58 v1.1.3 h1:v+sk57XuaCKGXpWtVBX8YJzO7hMGx4Aajh4TQbdEFdc=
39+
github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
3640
github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI=
3741
github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA=
3842
github.com/multiformats/go-multibase v0.0.1 h1:PN9/v21eLywrFWdFNsFKaU04kLJzuYzmrJR+ubhT9qA=
@@ -41,6 +45,10 @@ github.com/multiformats/go-multihash v0.0.1 h1:HHwN1K12I+XllBCrqKnhX949Orn4oawPk
4145
github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U=
4246
github.com/multiformats/go-multihash v0.0.10 h1:lMoNbh2Ssd9PUF74Nz008KGzGPlfeV6wH3rit5IIGCM=
4347
github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew=
48+
github.com/multiformats/go-multihash v0.0.13 h1:06x+mk/zj1FoMsgNejLpy6QTvJqlSt/BhLEy87zidlc=
49+
github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
50+
github.com/multiformats/go-varint v0.0.5 h1:XVZwSo04Cs3j/jS0uAEPpT3JY6DzMcVLLoWOSnCxOjg=
51+
github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
4452
github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992 h1:bzMe+2coZJYHnhGgVlcQKuRy4FSny4ds8dLQjw5P1XE=
4553
github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o=
4654
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
@@ -57,6 +65,8 @@ github.com/whyrusleeping/cbor-gen v0.0.0-20200414195334-429a0b5e922e h1:JY8o/ebU
5765
github.com/whyrusleeping/cbor-gen v0.0.0-20200414195334-429a0b5e922e/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI=
5866
github.com/whyrusleeping/cbor-gen v0.0.0-20200501014322-5f9941ef88e0 h1:dmdwCOVtJAm7qwONARangN4jgCisVFmSJ486JZ1LYaA=
5967
github.com/whyrusleeping/cbor-gen v0.0.0-20200501014322-5f9941ef88e0/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI=
68+
github.com/whyrusleeping/cbor-gen v0.0.0-20200504204219-64967432584d h1:Y25auOnuZb/GuJvqMflRSDWBz8/HBRME8fiD+H8zLfs=
69+
github.com/whyrusleeping/cbor-gen v0.0.0-20200504204219-64967432584d/go.mod h1:W5MvapuoHRP8rz4vxjwCK1pDqF1aQcWsV5PZ+AHbqdg=
6070
golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67 h1:ng3VDlRp5/DHpSWl02R4rM9I+8M2rhmsuLwAMmkLQWE=
6171
golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
6272
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=

pointer_cbor.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@ import (
88
cbg "github.com/whyrusleeping/cbor-gen"
99
)
1010

11+
var keyZero = []byte("0")
12+
var keyOne = []byte("1")
13+
1114
func (t *Pointer) MarshalCBOR(w io.Writer) error {
1215
if t.Link != cid.Undef && len(t.KVs) > 0 {
1316
return fmt.Errorf("hamt Pointer cannot have both a link and KVs")
1417
}
1518

16-
if err := cbg.CborWriteHeader(w, cbg.MajMap, 1); err != nil {
19+
scratch := make([]byte, 9)
20+
21+
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajMap, 1); err != nil {
1722
return err
1823
}
1924

@@ -22,28 +27,28 @@ func (t *Pointer) MarshalCBOR(w io.Writer) error {
2227
// Refmt (and the general IPLD data model currently) can't deal
2328
// with non string keys. So we have this weird restriction right now
2429
// hoping to be able to use integer keys soon
25-
if err := cbg.CborWriteHeader(w, cbg.MajTextString, 1); err != nil {
30+
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, 1); err != nil {
2631
return err
2732
}
2833

29-
if _, err := w.Write([]byte("0")); err != nil {
34+
if _, err := w.Write(keyZero); err != nil {
3035
return err
3136
}
3237

33-
if err := cbg.WriteCid(w, t.Link); err != nil {
38+
if err := cbg.WriteCidBuf(scratch, w, t.Link); err != nil {
3439
return err
3540
}
3641
} else {
3742
// key for KVs is "1"
38-
if err := cbg.CborWriteHeader(w, cbg.MajTextString, 1); err != nil {
43+
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, 1); err != nil {
3944
return err
4045
}
4146

42-
if _, err := w.Write([]byte("1")); err != nil {
47+
if _, err := w.Write(keyOne); err != nil {
4348
return err
4449
}
4550

46-
if err := cbg.CborWriteHeader(w, cbg.MajArray, uint64(len(t.KVs))); err != nil {
51+
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.KVs))); err != nil {
4752
return err
4853
}
4954

@@ -58,7 +63,9 @@ func (t *Pointer) MarshalCBOR(w io.Writer) error {
5863
}
5964

6065
func (t *Pointer) UnmarshalCBOR(br io.Reader) error {
61-
maj, extra, err := cbg.CborReadHeader(br)
66+
scratch := make([]byte, 8)
67+
68+
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch)
6269
if err != nil {
6370
return err
6471
}
@@ -70,7 +77,7 @@ func (t *Pointer) UnmarshalCBOR(br io.Reader) error {
7077
return fmt.Errorf("Pointers should be a single element map")
7178
}
7279

73-
maj, val, err := cbg.CborReadHeader(br)
80+
maj, val, err := cbg.CborReadHeaderBuf(br, scratch)
7481
if err != nil {
7582
return err
7683
}
@@ -83,21 +90,20 @@ func (t *Pointer) UnmarshalCBOR(br io.Reader) error {
8390
return fmt.Errorf("map keys in pointers must be a single byte long")
8491
}
8592

86-
var b [1]byte
87-
if _, err := io.ReadFull(br, b[:]); err != nil {
93+
if _, err := io.ReadAtLeast(br, scratch[:1], 1); err != nil {
8894
return err
8995
}
9096

91-
switch string(b[:]) {
92-
case "0":
97+
switch scratch[0] {
98+
case '0':
9399
c, err := cbg.ReadCid(br)
94100
if err != nil {
95101
return err
96102
}
97103
t.Link = c
98104
return nil
99-
case "1":
100-
maj, length, err := cbg.CborReadHeader(br)
105+
case '1':
106+
maj, length, err := cbg.CborReadHeaderBuf(br, scratch)
101107
if err != nil {
102108
return err
103109
}

0 commit comments

Comments
 (0)