+11
-11
mst/cbor_gen.go
+11
-11
mst/cbor_gen.go
···
18
18
var _ = math.E
19
19
var _ = sort.Sort
20
20
21
-
func (t *nodeData) MarshalCBOR(w io.Writer) error {
21
+
func (t *NodeData) MarshalCBOR(w io.Writer) error {
22
22
if t == nil {
23
23
_, err := w.Write(cbg.CborNull)
24
24
return err
···
30
30
return err
31
31
}
32
32
33
-
// t.Entries ([]mst.treeEntry) (slice)
33
+
// t.Entries ([]mst.TreeEntry) (slice)
34
34
if len("e") > 1000000 {
35
35
return xerrors.Errorf("Value in field \"e\" was too long")
36
36
}
···
81
81
return nil
82
82
}
83
83
84
-
func (t *nodeData) UnmarshalCBOR(r io.Reader) (err error) {
85
-
*t = nodeData{}
84
+
func (t *NodeData) UnmarshalCBOR(r io.Reader) (err error) {
85
+
*t = NodeData{}
86
86
87
87
cr := cbg.NewCborReader(r)
88
88
···
101
101
}
102
102
103
103
if extra > cbg.MaxLength {
104
-
return fmt.Errorf("nodeData: map struct too large (%d)", extra)
104
+
return fmt.Errorf("NodeData: map struct too large (%d)", extra)
105
105
}
106
106
107
107
n := extra
···
122
122
}
123
123
124
124
switch string(nameBuf[:nameLen]) {
125
-
// t.Entries ([]mst.treeEntry) (slice)
125
+
// t.Entries ([]mst.TreeEntry) (slice)
126
126
case "e":
127
127
128
128
maj, extra, err = cr.ReadHeader()
···
139
139
}
140
140
141
141
if extra > 0 {
142
-
t.Entries = make([]treeEntry, extra)
142
+
t.Entries = make([]TreeEntry, extra)
143
143
}
144
144
145
145
for i := 0; i < int(extra); i++ {
···
195
195
196
196
return nil
197
197
}
198
-
func (t *treeEntry) MarshalCBOR(w io.Writer) error {
198
+
func (t *TreeEntry) MarshalCBOR(w io.Writer) error {
199
199
if t == nil {
200
200
_, err := w.Write(cbg.CborNull)
201
201
return err
···
294
294
return nil
295
295
}
296
296
297
-
func (t *treeEntry) UnmarshalCBOR(r io.Reader) (err error) {
298
-
*t = treeEntry{}
297
+
func (t *TreeEntry) UnmarshalCBOR(r io.Reader) (err error) {
298
+
*t = TreeEntry{}
299
299
300
300
cr := cbg.NewCborReader(r)
301
301
···
314
314
}
315
315
316
316
if extra > cbg.MaxLength {
317
-
return fmt.Errorf("treeEntry: map struct too large (%d)", extra)
317
+
return fmt.Errorf("TreeEntry: map struct too large (%d)", extra)
318
318
}
319
319
320
320
n := extra
+8
-8
mst/mst.go
+8
-8
mst/mst.go
···
105
105
// the CBOR codec.
106
106
func CBORTypes() []reflect.Type {
107
107
return []reflect.Type{
108
-
reflect.TypeOf(nodeData{}),
109
-
reflect.TypeOf(treeEntry{}),
108
+
reflect.TypeOf(NodeData{}),
109
+
reflect.TypeOf(TreeEntry{}),
110
110
}
111
111
}
112
112
113
113
// MST tree node as gets serialized to CBOR. Note that the CBOR fields are all
114
114
// single-character.
115
-
type nodeData struct {
115
+
type NodeData struct {
116
116
Left *cid.Cid `cborgen:"l"` // [nullable] pointer to lower-level subtree to the "left" of this path/key
117
-
Entries []treeEntry `cborgen:"e"` // ordered list of entries at this node
117
+
Entries []TreeEntry `cborgen:"e"` // ordered list of entries at this node
118
118
}
119
119
120
-
// treeEntry are elements of nodeData's Entries.
121
-
type treeEntry struct {
120
+
// TreeEntry are elements of NodeData's Entries.
121
+
type TreeEntry struct {
122
122
PrefixLen int64 `cborgen:"p"` // count of characters shared with previous path/key in tree
123
123
KeySuffix []byte `cborgen:"k"` // remaining part of path/key (appended to "previous key")
124
124
Val cid.Cid `cborgen:"v"` // CID pointer at this path/key
···
189
189
// otherwise this is a virtual/pointer struct and we need to hydrate from
190
190
// blockstore before returning entries
191
191
if mst.pointer != cid.Undef {
192
-
var nd nodeData
192
+
var nd NodeData
193
193
if err := mst.cst.Get(ctx, mst.pointer, &nd); err != nil {
194
194
return nil, err
195
195
}
···
210
210
}
211
211
212
212
// golang-specific helper that calls in to deserializeNodeData
213
-
func entriesFromNodeData(ctx context.Context, nd *nodeData, cst cbor.IpldStore) ([]nodeEntry, error) {
213
+
func entriesFromNodeData(ctx context.Context, nd *NodeData, cst cbor.IpldStore) ([]nodeEntry, error) {
214
214
layer := -1
215
215
if len(nd.Entries) > 0 {
216
216
// NOTE(bnewbold): can compute the layer on the first KeySuffix, because for the first entry that field is a complete key
+2
-2
mst/mst_interop_test.go
+2
-2
mst/mst_interop_test.go
+4
-4
mst/mst_util.go
+4
-4
mst/mst_util.go
···
66
66
}
67
67
68
68
// Typescript: deserializeNodeData(storage, data, layer)
69
-
func deserializeNodeData(ctx context.Context, cst cbor.IpldStore, nd *nodeData, layer int) ([]nodeEntry, error) {
69
+
func deserializeNodeData(ctx context.Context, cst cbor.IpldStore, nd *NodeData, layer int) ([]nodeEntry, error) {
70
70
entries := []nodeEntry{}
71
71
if nd.Left != nil {
72
72
// Note: like Typescript, this is actually a lazy load
···
111
111
}
112
112
113
113
// Typescript: serializeNodeData(entries) -> NodeData
114
-
func serializeNodeData(entries []nodeEntry) (*nodeData, error) {
115
-
var data nodeData
114
+
func serializeNodeData(entries []nodeEntry) (*NodeData, error) {
115
+
var data NodeData
116
116
117
117
i := 0
118
118
if len(entries) > 0 && entries[0].isTree() {
···
157
157
}
158
158
159
159
prefixLen := countPrefixLen(lastKey, leaf.Key)
160
-
data.Entries = append(data.Entries, treeEntry{
160
+
data.Entries = append(data.Entries, TreeEntry{
161
161
PrefixLen: int64(prefixLen),
162
162
KeySuffix: []byte(leaf.Key)[prefixLen:],
163
163
Val: leaf.Val,