@cryptotaxi247 / kubo / commits / 076d0bd9b

merkeldag: change SetPrefix param to a pointer and reset the prefix on nil

License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>

Kevin Atkinson committed Mar 24, 2017 at 16:41 UTC 076d0bd9b1a0102ea889e3381a20287009825777
8 files changed +22 -14
core/commands/add.go
+1 -1
@@ -236,7 +236,7 @@ You can now refer to the added file in a gateway, like so:
236 fileAdder.Silent = silent
237 fileAdder.RawLeaves = rawblks
238 fileAdder.NoCopy = nocopy
239 - fileAdder.Prefix = prefix
239 + fileAdder.Prefix = &prefix
240
241 if hash {
242 md := dagtest.Mock()
core/coreunix/add.go
+2 -1
@@ -103,7 +103,7 @@ type Adder struct {
103 mroot *mfs.Root
104 unlocker bs.Unlocker
105 tempRoot *cid.Cid
106 - Prefix cid.Prefix
106 + Prefix *cid.Prefix
107 }
108
109 func (adder *Adder) mfsRoot() (*mfs.Root, error) {
@@ -113,6 +113,7 @@ func (adder *Adder) mfsRoot() (*mfs.Root, error) {
113 rnode := unixfs.EmptyDirNode()
114 rnode.SetPrefix(adder.Prefix)
115 mr, err := mfs.NewRoot(adder.ctx, adder.dagService, rnode, nil)
116 + mr.Prefix = adder.Prefix
117 if err != nil {
118 return nil, err
119 }
importer/helpers/dagbuilder.go
+3 -3
@@ -25,7 +25,7 @@ type DagBuilderHelper struct {
25 batch *dag.Batch
26 fullPath string
27 stat os.FileInfo
28 - prefix cid.Prefix
28 + prefix *cid.Prefix
29 }
30
31 type DagBuilderParams struct {
@@ -36,8 +36,8 @@ type DagBuilderParams struct {
36 // instead of using the unixfs TRaw type
37 RawLeaves bool
38
39 - // CID Prefix to use
40 - Prefix cid.Prefix
39 + // CID Prefix to use if set
40 + Prefix *cid.Prefix
41
42 // DAGService to write blocks to (required)
43 Dagserv dag.DAGService
importer/helpers/helpers.go
+1 -1
@@ -62,7 +62,7 @@ func NewUnixfsNodeFromDag(nd *dag.ProtoNode) (*UnixfsNode, error) {
62 }, nil
63 }
64
65 -func (n *UnixfsNode) SetPrefix(prefix cid.Prefix) {
65 +func (n *UnixfsNode) SetPrefix(prefix *cid.Prefix) {
66 n.node.SetPrefix(prefix)
67 }
68
merkledag/node.go
+12 -5
@@ -53,10 +53,17 @@ func PrefixForCidVersion(version int) (cid.Prefix, error) {
53 }
54 }
55
56 -func (n *ProtoNode) SetPrefix(prefix cid.Prefix) {
57 - n.Prefix = prefix
58 - n.encoded = nil
59 - n.cached = nil
56 +// SetPrefix sets the prefix if it is non nil, if prefix is nil then
57 +// it resets it the default value
58 +func (n *ProtoNode) SetPrefix(prefix *cid.Prefix) {
59 + if prefix == nil {
60 + n.Prefix = v0CidPrefix
61 + } else {
62 + n.Prefix = *prefix
63 + n.Prefix.Codec = cid.DagProtobuf
64 + n.encoded = nil
65 + n.cached = nil
66 + }
67 }
68
69 type LinkSlice []*node.Link
@@ -287,7 +294,7 @@ func (n *ProtoNode) Cid() *cid.Cid {
294 }
295
296 if n.Prefix.Codec == 0 {
290 - n.Prefix = v0CidPrefix
297 + n.SetPrefix(nil)
298 }
299
300 c, err := n.Prefix.Sum(n.RawData())
mfs/dir.go
+1 -1
@@ -58,7 +58,7 @@ func NewDirectory(ctx context.Context, name string, node node.Node, parent child
58 }, nil
59 }
60
61 -func (d *Directory) SetPrefix(prefix cid.Prefix) {
61 +func (d *Directory) SetPrefix(prefix *cid.Prefix) {
62 d.dirbuilder.SetPrefix(prefix)
63 }
64
mfs/system.go
+1 -1
@@ -63,7 +63,7 @@ type Root struct {
63 Type string
64
65 // Prefix to use for any children created
66 - Prefix cid.Prefix
66 + Prefix *cid.Prefix
67 }
68
69 type PubFunc func(context.Context, *cid.Cid) error
unixfs/io/dirbuilder.go
+1 -1
@@ -81,7 +81,7 @@ func NewDirectoryFromNode(dserv mdag.DAGService, nd node.Node) (*Directory, erro
81 }
82
83 // SetPrefix sets the prefix of the root node
84 -func (d *Directory) SetPrefix(prefix cid.Prefix) {
84 +func (d *Directory) SetPrefix(prefix *cid.Prefix) {
85 if d.dirnode != nil {
86 d.dirnode.SetPrefix(prefix)
87 }