Skip to content

Commit 23db24d

Browse files
authored
Merge pull request ipfs/go-unixfs#7 from ipfs/kevina/builder
Update to use new Builder interface for creating CIDs. This commit was moved from ipfs/go-unixfs@9900831
2 parents 1a9f048 + 86f106a commit 23db24d

File tree

7 files changed

+66
-66
lines changed

7 files changed

+66
-66
lines changed

unixfs/ipld-merkledag/hamt/hamt.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ type Shard struct {
5252
tableSize int
5353
tableSizeLg2 int
5454

55-
prefix *cid.Prefix
55+
builder cid.Builder
5656
hashFunc uint64
5757

5858
prefixPadStr string
@@ -124,25 +124,25 @@ func NewHamtFromDag(dserv ipld.DAGService, nd ipld.Node) (*Shard, error) {
124124
ds.children = make([]child, len(pbnd.Links()))
125125
ds.bitfield.SetBytes(pbd.GetData())
126126
ds.hashFunc = pbd.GetHashType()
127-
ds.prefix = &ds.nd.Prefix
127+
ds.builder = ds.nd.CidBuilder()
128128

129129
return ds, nil
130130
}
131131

132-
// SetPrefix sets the CID Prefix
133-
func (ds *Shard) SetPrefix(prefix *cid.Prefix) {
134-
ds.prefix = prefix
132+
// SetCidBuilder sets the CID Builder
133+
func (ds *Shard) SetCidBuilder(builder cid.Builder) {
134+
ds.builder = builder
135135
}
136136

137-
// Prefix gets the CID Prefix, may be nil if unset
138-
func (ds *Shard) Prefix() *cid.Prefix {
139-
return ds.prefix
137+
// CidBuilder gets the CID Builder, may be nil if unset
138+
func (ds *Shard) CidBuilder() cid.Builder {
139+
return ds.builder
140140
}
141141

142142
// Node serializes the HAMT structure into a merkledag node with unixfs formatting
143143
func (ds *Shard) Node() (ipld.Node, error) {
144144
out := new(dag.ProtoNode)
145-
out.SetPrefix(ds.prefix)
145+
out.SetCidBuilder(ds.builder)
146146

147147
cindex := 0
148148
// TODO: optimized 'for each set bit'
@@ -494,7 +494,7 @@ func (ds *Shard) modifyValue(ctx context.Context, hv *hashBits, key string, val
494494
if err != nil {
495495
return err
496496
}
497-
ns.prefix = ds.prefix
497+
ns.builder = ds.builder
498498
chhv := &hashBits{
499499
b: hash([]byte(child.key)),
500500
consumed: hv.consumed,

unixfs/ipld-merkledag/importer/helpers/dagbuilder.go

+26-26
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ import (
1919
// DagBuilderHelper wraps together a bunch of objects needed to
2020
// efficiently create unixfs dag trees
2121
type DagBuilderHelper struct {
22-
dserv ipld.DAGService
23-
spl chunker.Splitter
24-
recvdErr error
25-
rawLeaves bool
26-
nextData []byte // the next item to return.
27-
maxlinks int
28-
batch *ipld.Batch
29-
prefix *cid.Prefix
22+
dserv ipld.DAGService
23+
spl chunker.Splitter
24+
recvdErr error
25+
rawLeaves bool
26+
nextData []byte // the next item to return.
27+
maxlinks int
28+
batch *ipld.Batch
29+
cidBuilder cid.Builder
3030

3131
// Filestore support variables.
3232
// ----------------------------
@@ -53,8 +53,8 @@ type DagBuilderParams struct {
5353
// instead of using the unixfs TRaw type
5454
RawLeaves bool
5555

56-
// CID Prefix to use if set
57-
Prefix *cid.Prefix
56+
// CID Builder to use if set
57+
CidBuilder cid.Builder
5858

5959
// DAGService to write blocks to (required)
6060
Dagserv ipld.DAGService
@@ -73,12 +73,12 @@ type DagBuilderParams struct {
7373
// chunker.Splitter as data source.
7474
func (dbp *DagBuilderParams) New(spl chunker.Splitter) *DagBuilderHelper {
7575
db := &DagBuilderHelper{
76-
dserv: dbp.Dagserv,
77-
spl: spl,
78-
rawLeaves: dbp.RawLeaves,
79-
prefix: dbp.Prefix,
80-
maxlinks: dbp.Maxlinks,
81-
batch: ipld.NewBatch(context.TODO(), dbp.Dagserv),
76+
dserv: dbp.Dagserv,
77+
spl: spl,
78+
rawLeaves: dbp.RawLeaves,
79+
cidBuilder: dbp.CidBuilder,
80+
maxlinks: dbp.Maxlinks,
81+
batch: ipld.NewBatch(context.TODO(), dbp.Dagserv),
8282
}
8383
if fi, ok := spl.Reader().(files.FileInfo); dbp.NoCopy && ok {
8484
db.fullPath = fi.AbsPath()
@@ -141,13 +141,13 @@ func (db *DagBuilderHelper) NewUnixfsNode() *UnixfsNode {
141141
node: new(dag.ProtoNode),
142142
ufmt: ft.NewFSNode(ft.TFile),
143143
}
144-
n.SetPrefix(db.prefix)
144+
n.SetCidBuilder(db.cidBuilder)
145145
return n
146146
}
147147

148-
// GetPrefix returns the internal `cid.Prefix` set in the builder.
149-
func (db *DagBuilderHelper) GetPrefix() *cid.Prefix {
150-
return db.prefix
148+
// GetCidBuilder returns the internal `cid.CidBuilder` set in the builder.
149+
func (db *DagBuilderHelper) GetCidBuilder() cid.Builder {
150+
return db.cidBuilder
151151
}
152152

153153
// NewLeaf creates a leaf node filled with data. If rawLeaves is
@@ -160,13 +160,13 @@ func (db *DagBuilderHelper) NewLeaf(data []byte) (*UnixfsNode, error) {
160160
}
161161

162162
if db.rawLeaves {
163-
if db.prefix == nil {
163+
if db.cidBuilder == nil {
164164
return &UnixfsNode{
165165
rawnode: dag.NewRawNode(data),
166166
raw: true,
167167
}, nil
168168
}
169-
rawnode, err := dag.NewRawNodeWPrefix(data, *db.prefix)
169+
rawnode, err := dag.NewRawNodeWPrefix(data, db.cidBuilder)
170170
if err != nil {
171171
return nil, err
172172
}
@@ -194,10 +194,10 @@ func (db *DagBuilderHelper) NewLeafNode(data []byte) (ipld.Node, error) {
194194

195195
if db.rawLeaves {
196196
// Encapsulate the data in a raw node.
197-
if db.prefix == nil {
197+
if db.cidBuilder == nil {
198198
return dag.NewRawNode(data), nil
199199
}
200-
rawnode, err := dag.NewRawNodeWPrefix(data, *db.prefix)
200+
rawnode, err := dag.NewRawNodeWPrefix(data, db.cidBuilder)
201201
if err != nil {
202202
return nil, err
203203
}
@@ -229,7 +229,7 @@ func (db *DagBuilderHelper) newUnixfsBlock() *UnixfsNode {
229229
node: new(dag.ProtoNode),
230230
ufmt: ft.NewFSNode(ft.TRaw),
231231
}
232-
n.SetPrefix(db.prefix)
232+
n.SetCidBuilder(db.cidBuilder)
233233
return n
234234
}
235235

@@ -401,7 +401,7 @@ type FSNodeOverDag struct {
401401
func (db *DagBuilderHelper) NewFSNodeOverDag(fsNodeType pb.Data_DataType) *FSNodeOverDag {
402402
node := new(FSNodeOverDag)
403403
node.dag = new(dag.ProtoNode)
404-
node.dag.SetPrefix(db.GetPrefix())
404+
node.dag.SetCidBuilder(db.GetCidBuilder())
405405

406406
node.file = ft.NewFSNode(fsNodeType)
407407

unixfs/ipld-merkledag/importer/helpers/helpers.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ func NewUnixfsNodeFromDag(nd *dag.ProtoNode) (*UnixfsNode, error) {
6060
}, nil
6161
}
6262

63-
// SetPrefix sets the CID Prefix
64-
func (n *UnixfsNode) SetPrefix(prefix *cid.Prefix) {
65-
n.node.SetPrefix(prefix)
63+
// SetCidBuilder sets the CID Builder
64+
func (n *UnixfsNode) SetCidBuilder(builder cid.Builder) {
65+
n.node.SetCidBuilder(builder)
6666
}
6767

6868
// NumChildren returns the number of children referenced by this UnixfsNode.

unixfs/ipld-merkledag/importer/importer_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func getTrickleDag(t testing.TB, size int64, blksize int64) (ipld.Node, ipld.DAG
3838

3939
func TestStableCid(t *testing.T) {
4040
ds := mdtest.Mock()
41-
buf := make([]byte, 10 * 1024 * 1024)
41+
buf := make([]byte, 10*1024*1024)
4242
u.NewSeededRand(0xdeadbeef).Read(buf)
4343
r := bytes.NewReader(buf)
4444

unixfs/ipld-merkledag/io/directory.go

+17-17
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ var DefaultShardWidth = 256
2929
// (which is the main consumer of this interface).
3030
type Directory interface {
3131

32-
// SetPrefix sets the CID prefix of the root node.
33-
SetPrefix(*cid.Prefix)
32+
// SetCidBuilder sets the CID Builder of the root node.
33+
SetCidBuilder(cid.Builder)
3434

3535
// AddChild adds a (name, key) pair to the root node.
3636
AddChild(context.Context, string, ipld.Node) error
@@ -51,8 +51,8 @@ type Directory interface {
5151
// GetNode returns the root of this directory.
5252
GetNode() (ipld.Node, error)
5353

54-
// GetPrefix returns the CID Prefix used.
55-
GetPrefix() *cid.Prefix
54+
// GetCidBuilder returns the CID Builder used.
55+
GetCidBuilder() cid.Builder
5656
}
5757

5858
// TODO: Evaluate removing `dserv` from this layer and providing it in MFS.
@@ -127,9 +127,9 @@ func NewDirectoryFromNode(dserv ipld.DAGService, node ipld.Node) (Directory, err
127127
return nil, ErrNotADir
128128
}
129129

130-
// SetPrefix implements the `Directory` interface.
131-
func (d *BasicDirectory) SetPrefix(prefix *cid.Prefix) {
132-
d.node.SetPrefix(prefix)
130+
// SetCidBuilder implements the `Directory` interface.
131+
func (d *BasicDirectory) SetCidBuilder(builder cid.Builder) {
132+
d.node.SetCidBuilder(builder)
133133
}
134134

135135
// AddChild implements the `Directory` interface. It adds (or replaces)
@@ -179,9 +179,9 @@ func (d *BasicDirectory) GetNode() (ipld.Node, error) {
179179
return d.node, nil
180180
}
181181

182-
// GetPrefix implements the `Directory` interface.
183-
func (d *BasicDirectory) GetPrefix() *cid.Prefix {
184-
return &d.node.Prefix
182+
// GetCidBuilder implements the `Directory` interface.
183+
func (d *BasicDirectory) GetCidBuilder() cid.Builder {
184+
return d.node.CidBuilder()
185185
}
186186

187187
// SwitchToSharding returns a HAMT implementation of this directory.
@@ -193,7 +193,7 @@ func (d *BasicDirectory) SwitchToSharding(ctx context.Context) (Directory, error
193193
if err != nil {
194194
return nil, err
195195
}
196-
shard.SetPrefix(&d.node.Prefix)
196+
shard.SetCidBuilder(d.node.CidBuilder())
197197
hamtDir.shard = shard
198198

199199
for _, lnk := range d.node.Links() {
@@ -211,9 +211,9 @@ func (d *BasicDirectory) SwitchToSharding(ctx context.Context) (Directory, error
211211
return hamtDir, nil
212212
}
213213

214-
// SetPrefix implements the `Directory` interface.
215-
func (d *HAMTDirectory) SetPrefix(prefix *cid.Prefix) {
216-
d.shard.SetPrefix(prefix)
214+
// SetCidBuilder implements the `Directory` interface.
215+
func (d *HAMTDirectory) SetCidBuilder(builder cid.Builder) {
216+
d.shard.SetCidBuilder(builder)
217217
}
218218

219219
// AddChild implements the `Directory` interface.
@@ -251,7 +251,7 @@ func (d *HAMTDirectory) GetNode() (ipld.Node, error) {
251251
return d.shard.Node()
252252
}
253253

254-
// GetPrefix implements the `Directory` interface.
255-
func (d *HAMTDirectory) GetPrefix() *cid.Prefix {
256-
return d.shard.Prefix()
254+
// GetCidBuilder implements the `Directory` interface.
255+
func (d *HAMTDirectory) GetCidBuilder() cid.Builder {
256+
return d.shard.CidBuilder()
257257
}

unixfs/ipld-merkledag/mod/dagmodifier.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ func (dm *DagModifier) modifyDag(n ipld.Node, offset uint64) (*cid.Cid, error) {
256256

257257
nd := new(mdag.ProtoNode)
258258
nd.SetData(b)
259-
nd.SetPrefix(&nd0.Prefix)
259+
nd.SetCidBuilder(nd0.CidBuilder())
260260
err = dm.dagserv.Add(dm.ctx, nd)
261261
if err != nil {
262262
return nil, err
@@ -345,10 +345,10 @@ func (dm *DagModifier) appendData(nd ipld.Node, spl chunker.Splitter) (ipld.Node
345345
switch nd := nd.(type) {
346346
case *mdag.ProtoNode, *mdag.RawNode:
347347
dbp := &help.DagBuilderParams{
348-
Dagserv: dm.dagserv,
349-
Maxlinks: help.DefaultLinksPerBlock,
350-
Prefix: &dm.Prefix,
351-
RawLeaves: dm.RawLeaves,
348+
Dagserv: dm.dagserv,
349+
Maxlinks: help.DefaultLinksPerBlock,
350+
CidBuilder: dm.Prefix,
351+
RawLeaves: dm.RawLeaves,
352352
}
353353
return trickle.Append(dm.ctx, nd, dbp.New(spl))
354354
default:

unixfs/ipld-merkledag/test/utils.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ func GetNode(t testing.TB, dserv ipld.DAGService, data []byte, opts NodeOpts) ip
6161
in := bytes.NewReader(data)
6262

6363
dbp := h.DagBuilderParams{
64-
Dagserv: dserv,
65-
Maxlinks: h.DefaultLinksPerBlock,
66-
Prefix: &opts.Prefix,
67-
RawLeaves: opts.RawLeavesUsed,
64+
Dagserv: dserv,
65+
Maxlinks: h.DefaultLinksPerBlock,
66+
CidBuilder: opts.Prefix,
67+
RawLeaves: opts.RawLeavesUsed,
6868
}
6969

7070
node, err := trickle.Layout(dbp.New(SizeSplitterGen(500)(in)))

0 commit comments

Comments
 (0)