diff --git a/unixfs/ipld-merkledag/hamt/hamt.go b/unixfs/ipld-merkledag/hamt/hamt.go index 6887a148d..4d3bd3b8e 100644 --- a/unixfs/ipld-merkledag/hamt/hamt.go +++ b/unixfs/ipld-merkledag/hamt/hamt.go @@ -52,7 +52,7 @@ type Shard struct { tableSize int tableSizeLg2 int - prefix *cid.Prefix + builder cid.Builder hashFunc uint64 prefixPadStr string @@ -124,25 +124,25 @@ func NewHamtFromDag(dserv ipld.DAGService, nd ipld.Node) (*Shard, error) { ds.children = make([]child, len(pbnd.Links())) ds.bitfield.SetBytes(pbd.GetData()) ds.hashFunc = pbd.GetHashType() - ds.prefix = &ds.nd.Prefix + ds.builder = ds.nd.CidBuilder() return ds, nil } -// SetPrefix sets the CID Prefix -func (ds *Shard) SetPrefix(prefix *cid.Prefix) { - ds.prefix = prefix +// SetCidBuilder sets the CID Builder +func (ds *Shard) SetCidBuilder(builder cid.Builder) { + ds.builder = builder } -// Prefix gets the CID Prefix, may be nil if unset -func (ds *Shard) Prefix() *cid.Prefix { - return ds.prefix +// CidBuilder gets the CID Builder, may be nil if unset +func (ds *Shard) CidBuilder() cid.Builder { + return ds.builder } // Node serializes the HAMT structure into a merkledag node with unixfs formatting func (ds *Shard) Node() (ipld.Node, error) { out := new(dag.ProtoNode) - out.SetPrefix(ds.prefix) + out.SetCidBuilder(ds.builder) cindex := 0 // TODO: optimized 'for each set bit' @@ -494,7 +494,7 @@ func (ds *Shard) modifyValue(ctx context.Context, hv *hashBits, key string, val if err != nil { return err } - ns.prefix = ds.prefix + ns.builder = ds.builder chhv := &hashBits{ b: hash([]byte(child.key)), consumed: hv.consumed, diff --git a/unixfs/ipld-merkledag/importer/helpers/dagbuilder.go b/unixfs/ipld-merkledag/importer/helpers/dagbuilder.go index 387b26304..4c897fd48 100644 --- a/unixfs/ipld-merkledag/importer/helpers/dagbuilder.go +++ b/unixfs/ipld-merkledag/importer/helpers/dagbuilder.go @@ -19,14 +19,14 @@ import ( // DagBuilderHelper wraps together a bunch of objects needed to // efficiently create unixfs dag trees type DagBuilderHelper struct { - dserv ipld.DAGService - spl chunker.Splitter - recvdErr error - rawLeaves bool - nextData []byte // the next item to return. - maxlinks int - batch *ipld.Batch - prefix *cid.Prefix + dserv ipld.DAGService + spl chunker.Splitter + recvdErr error + rawLeaves bool + nextData []byte // the next item to return. + maxlinks int + batch *ipld.Batch + cidBuilder cid.Builder // Filestore support variables. // ---------------------------- @@ -53,8 +53,8 @@ type DagBuilderParams struct { // instead of using the unixfs TRaw type RawLeaves bool - // CID Prefix to use if set - Prefix *cid.Prefix + // CID Builder to use if set + CidBuilder cid.Builder // DAGService to write blocks to (required) Dagserv ipld.DAGService @@ -73,12 +73,12 @@ type DagBuilderParams struct { // chunker.Splitter as data source. func (dbp *DagBuilderParams) New(spl chunker.Splitter) *DagBuilderHelper { db := &DagBuilderHelper{ - dserv: dbp.Dagserv, - spl: spl, - rawLeaves: dbp.RawLeaves, - prefix: dbp.Prefix, - maxlinks: dbp.Maxlinks, - batch: ipld.NewBatch(context.TODO(), dbp.Dagserv), + dserv: dbp.Dagserv, + spl: spl, + rawLeaves: dbp.RawLeaves, + cidBuilder: dbp.CidBuilder, + maxlinks: dbp.Maxlinks, + batch: ipld.NewBatch(context.TODO(), dbp.Dagserv), } if fi, ok := spl.Reader().(files.FileInfo); dbp.NoCopy && ok { db.fullPath = fi.AbsPath() @@ -141,13 +141,13 @@ func (db *DagBuilderHelper) NewUnixfsNode() *UnixfsNode { node: new(dag.ProtoNode), ufmt: ft.NewFSNode(ft.TFile), } - n.SetPrefix(db.prefix) + n.SetCidBuilder(db.cidBuilder) return n } -// GetPrefix returns the internal `cid.Prefix` set in the builder. -func (db *DagBuilderHelper) GetPrefix() *cid.Prefix { - return db.prefix +// GetCidBuilder returns the internal `cid.CidBuilder` set in the builder. +func (db *DagBuilderHelper) GetCidBuilder() cid.Builder { + return db.cidBuilder } // NewLeaf creates a leaf node filled with data. If rawLeaves is @@ -160,13 +160,13 @@ func (db *DagBuilderHelper) NewLeaf(data []byte) (*UnixfsNode, error) { } if db.rawLeaves { - if db.prefix == nil { + if db.cidBuilder == nil { return &UnixfsNode{ rawnode: dag.NewRawNode(data), raw: true, }, nil } - rawnode, err := dag.NewRawNodeWPrefix(data, *db.prefix) + rawnode, err := dag.NewRawNodeWPrefix(data, db.cidBuilder) if err != nil { return nil, err } @@ -194,10 +194,10 @@ func (db *DagBuilderHelper) NewLeafNode(data []byte) (ipld.Node, error) { if db.rawLeaves { // Encapsulate the data in a raw node. - if db.prefix == nil { + if db.cidBuilder == nil { return dag.NewRawNode(data), nil } - rawnode, err := dag.NewRawNodeWPrefix(data, *db.prefix) + rawnode, err := dag.NewRawNodeWPrefix(data, db.cidBuilder) if err != nil { return nil, err } @@ -229,7 +229,7 @@ func (db *DagBuilderHelper) newUnixfsBlock() *UnixfsNode { node: new(dag.ProtoNode), ufmt: ft.NewFSNode(ft.TRaw), } - n.SetPrefix(db.prefix) + n.SetCidBuilder(db.cidBuilder) return n } @@ -401,7 +401,7 @@ type FSNodeOverDag struct { func (db *DagBuilderHelper) NewFSNodeOverDag(fsNodeType pb.Data_DataType) *FSNodeOverDag { node := new(FSNodeOverDag) node.dag = new(dag.ProtoNode) - node.dag.SetPrefix(db.GetPrefix()) + node.dag.SetCidBuilder(db.GetCidBuilder()) node.file = ft.NewFSNode(fsNodeType) diff --git a/unixfs/ipld-merkledag/importer/helpers/helpers.go b/unixfs/ipld-merkledag/importer/helpers/helpers.go index 6fb0f83c8..a2e443ea3 100644 --- a/unixfs/ipld-merkledag/importer/helpers/helpers.go +++ b/unixfs/ipld-merkledag/importer/helpers/helpers.go @@ -60,9 +60,9 @@ func NewUnixfsNodeFromDag(nd *dag.ProtoNode) (*UnixfsNode, error) { }, nil } -// SetPrefix sets the CID Prefix -func (n *UnixfsNode) SetPrefix(prefix *cid.Prefix) { - n.node.SetPrefix(prefix) +// SetCidBuilder sets the CID Builder +func (n *UnixfsNode) SetCidBuilder(builder cid.Builder) { + n.node.SetCidBuilder(builder) } // NumChildren returns the number of children referenced by this UnixfsNode. diff --git a/unixfs/ipld-merkledag/importer/importer_test.go b/unixfs/ipld-merkledag/importer/importer_test.go index 823abaa4b..b39aff57d 100644 --- a/unixfs/ipld-merkledag/importer/importer_test.go +++ b/unixfs/ipld-merkledag/importer/importer_test.go @@ -38,7 +38,7 @@ func getTrickleDag(t testing.TB, size int64, blksize int64) (ipld.Node, ipld.DAG func TestStableCid(t *testing.T) { ds := mdtest.Mock() - buf := make([]byte, 10 * 1024 * 1024) + buf := make([]byte, 10*1024*1024) u.NewSeededRand(0xdeadbeef).Read(buf) r := bytes.NewReader(buf) diff --git a/unixfs/ipld-merkledag/io/directory.go b/unixfs/ipld-merkledag/io/directory.go index 89864566e..aa1ec8de7 100644 --- a/unixfs/ipld-merkledag/io/directory.go +++ b/unixfs/ipld-merkledag/io/directory.go @@ -29,8 +29,8 @@ var DefaultShardWidth = 256 // (which is the main consumer of this interface). type Directory interface { - // SetPrefix sets the CID prefix of the root node. - SetPrefix(*cid.Prefix) + // SetCidBuilder sets the CID Builder of the root node. + SetCidBuilder(cid.Builder) // AddChild adds a (name, key) pair to the root node. AddChild(context.Context, string, ipld.Node) error @@ -51,8 +51,8 @@ type Directory interface { // GetNode returns the root of this directory. GetNode() (ipld.Node, error) - // GetPrefix returns the CID Prefix used. - GetPrefix() *cid.Prefix + // GetCidBuilder returns the CID Builder used. + GetCidBuilder() cid.Builder } // 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 return nil, ErrNotADir } -// SetPrefix implements the `Directory` interface. -func (d *BasicDirectory) SetPrefix(prefix *cid.Prefix) { - d.node.SetPrefix(prefix) +// SetCidBuilder implements the `Directory` interface. +func (d *BasicDirectory) SetCidBuilder(builder cid.Builder) { + d.node.SetCidBuilder(builder) } // AddChild implements the `Directory` interface. It adds (or replaces) @@ -179,9 +179,9 @@ func (d *BasicDirectory) GetNode() (ipld.Node, error) { return d.node, nil } -// GetPrefix implements the `Directory` interface. -func (d *BasicDirectory) GetPrefix() *cid.Prefix { - return &d.node.Prefix +// GetCidBuilder implements the `Directory` interface. +func (d *BasicDirectory) GetCidBuilder() cid.Builder { + return d.node.CidBuilder() } // SwitchToSharding returns a HAMT implementation of this directory. @@ -193,7 +193,7 @@ func (d *BasicDirectory) SwitchToSharding(ctx context.Context) (Directory, error if err != nil { return nil, err } - shard.SetPrefix(&d.node.Prefix) + shard.SetCidBuilder(d.node.CidBuilder()) hamtDir.shard = shard for _, lnk := range d.node.Links() { @@ -211,9 +211,9 @@ func (d *BasicDirectory) SwitchToSharding(ctx context.Context) (Directory, error return hamtDir, nil } -// SetPrefix implements the `Directory` interface. -func (d *HAMTDirectory) SetPrefix(prefix *cid.Prefix) { - d.shard.SetPrefix(prefix) +// SetCidBuilder implements the `Directory` interface. +func (d *HAMTDirectory) SetCidBuilder(builder cid.Builder) { + d.shard.SetCidBuilder(builder) } // AddChild implements the `Directory` interface. @@ -251,7 +251,7 @@ func (d *HAMTDirectory) GetNode() (ipld.Node, error) { return d.shard.Node() } -// GetPrefix implements the `Directory` interface. -func (d *HAMTDirectory) GetPrefix() *cid.Prefix { - return d.shard.Prefix() +// GetCidBuilder implements the `Directory` interface. +func (d *HAMTDirectory) GetCidBuilder() cid.Builder { + return d.shard.CidBuilder() } diff --git a/unixfs/ipld-merkledag/mod/dagmodifier.go b/unixfs/ipld-merkledag/mod/dagmodifier.go index 09665b80c..f6e5f4820 100644 --- a/unixfs/ipld-merkledag/mod/dagmodifier.go +++ b/unixfs/ipld-merkledag/mod/dagmodifier.go @@ -256,7 +256,7 @@ func (dm *DagModifier) modifyDag(n ipld.Node, offset uint64) (*cid.Cid, error) { nd := new(mdag.ProtoNode) nd.SetData(b) - nd.SetPrefix(&nd0.Prefix) + nd.SetCidBuilder(nd0.CidBuilder()) err = dm.dagserv.Add(dm.ctx, nd) if err != nil { return nil, err @@ -345,10 +345,10 @@ func (dm *DagModifier) appendData(nd ipld.Node, spl chunker.Splitter) (ipld.Node switch nd := nd.(type) { case *mdag.ProtoNode, *mdag.RawNode: dbp := &help.DagBuilderParams{ - Dagserv: dm.dagserv, - Maxlinks: help.DefaultLinksPerBlock, - Prefix: &dm.Prefix, - RawLeaves: dm.RawLeaves, + Dagserv: dm.dagserv, + Maxlinks: help.DefaultLinksPerBlock, + CidBuilder: dm.Prefix, + RawLeaves: dm.RawLeaves, } return trickle.Append(dm.ctx, nd, dbp.New(spl)) default: diff --git a/unixfs/ipld-merkledag/test/utils.go b/unixfs/ipld-merkledag/test/utils.go index cc8fe4dd0..fdd307c56 100644 --- a/unixfs/ipld-merkledag/test/utils.go +++ b/unixfs/ipld-merkledag/test/utils.go @@ -61,10 +61,10 @@ func GetNode(t testing.TB, dserv ipld.DAGService, data []byte, opts NodeOpts) ip in := bytes.NewReader(data) dbp := h.DagBuilderParams{ - Dagserv: dserv, - Maxlinks: h.DefaultLinksPerBlock, - Prefix: &opts.Prefix, - RawLeaves: opts.RawLeavesUsed, + Dagserv: dserv, + Maxlinks: h.DefaultLinksPerBlock, + CidBuilder: opts.Prefix, + RawLeaves: opts.RawLeavesUsed, } node, err := trickle.Layout(dbp.New(SizeSplitterGen(500)(in)))