Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0244e50

Browse files
authoredAug 11, 2018
Merge pull request ipfs#6 from ipfs/kevina/builder
Update to use new Builder interface for creating CIDs.
2 parents 4d2a12a + 70cb3dd commit 0244e50

File tree

3 files changed

+24
-28
lines changed

3 files changed

+24
-28
lines changed
 

‎coding.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,7 @@ func (n *ProtoNode) EncodeProtobuf(force bool) ([]byte, error) {
9393
}
9494

9595
if n.cached == nil {
96-
if n.Prefix.Codec == 0 { // unset
97-
n.Prefix = v0CidPrefix
98-
}
99-
c, err := n.Prefix.Sum(n.encoded)
96+
c, err := n.CidBuilder().Sum(n.encoded)
10097
if err != nil {
10198
return nil, err
10299
}
@@ -134,7 +131,7 @@ func DecodeProtobufBlock(b blocks.Block) (ipld.Node, error) {
134131
}
135132

136133
decnd.cached = c
137-
decnd.Prefix = c.Prefix()
134+
decnd.SetCidBuilder(c.Prefix())
138135
return decnd, nil
139136
}
140137

‎node.go

+18-15
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ type ProtoNode struct {
2727

2828
cached *cid.Cid
2929

30-
// Prefix specifies cid version and hashing function
31-
Prefix cid.Prefix
30+
// builder specifies cid version and hashing function
31+
builder cid.Builder
3232
}
3333

3434
var v0CidPrefix = cid.Prefix{
@@ -63,14 +63,21 @@ func PrefixForCidVersion(version int) (cid.Prefix, error) {
6363
}
6464
}
6565

66-
// SetPrefix sets the CID prefix if it is non nil, if prefix is nil then
67-
// it resets it the default value
68-
func (n *ProtoNode) SetPrefix(prefix *cid.Prefix) {
69-
if prefix == nil {
70-
n.Prefix = v0CidPrefix
66+
// CidBuilder returns the CID Builder for this ProtoNode, it is never nil
67+
func (n *ProtoNode) CidBuilder() cid.Builder {
68+
if n.builder == nil {
69+
n.builder = v0CidPrefix
70+
}
71+
return n.builder
72+
}
73+
74+
// SetCidBuilder sets the CID builder if it is non nil, if nil then it
75+
// is reset to the default value
76+
func (n *ProtoNode) SetCidBuilder(builder cid.Builder) {
77+
if builder == nil {
78+
n.builder = v0CidPrefix
7179
} else {
72-
n.Prefix = *prefix
73-
n.Prefix.Codec = cid.DagProtobuf
80+
n.builder = builder.WithCodec(cid.DagProtobuf)
7481
n.encoded = nil
7582
n.cached = nil
7683
}
@@ -191,7 +198,7 @@ func (n *ProtoNode) Copy() ipld.Node {
191198
copy(nnode.links, n.links)
192199
}
193200

194-
nnode.Prefix = n.Prefix
201+
nnode.builder = n.builder
195202

196203
return nnode
197204
}
@@ -301,11 +308,7 @@ func (n *ProtoNode) Cid() *cid.Cid {
301308
return n.cached
302309
}
303310

304-
if n.Prefix.Codec == 0 {
305-
n.SetPrefix(nil)
306-
}
307-
308-
c, err := n.Prefix.Sum(n.RawData())
311+
c, err := n.builder.Sum(n.RawData())
309312
if err != nil {
310313
// programmer error
311314
err = fmt.Errorf("invalid CID of length %d: %x: %v", len(n.RawData()), n.RawData(), err)

‎raw.go

+4-8
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,10 @@ func DecodeRawBlock(block blocks.Block) (ipld.Node, error) {
3434

3535
var _ ipld.DecodeBlockFunc = DecodeRawBlock
3636

37-
// NewRawNodeWPrefix creates a RawNode with the hash function
38-
// specified in prefix.
39-
func NewRawNodeWPrefix(data []byte, prefix cid.Prefix) (*RawNode, error) {
40-
prefix.Codec = cid.Raw
41-
if prefix.Version == 0 {
42-
prefix.Version = 1
43-
}
44-
c, err := prefix.Sum(data)
37+
// NewRawNodeWPrefix creates a RawNode using the provided cid builder
38+
func NewRawNodeWPrefix(data []byte, builder cid.Builder) (*RawNode, error) {
39+
builder = builder.WithCodec(cid.Raw)
40+
c, err := builder.Sum(data)
4541
if err != nil {
4642
return nil, err
4743
}

0 commit comments

Comments
 (0)
Please sign in to comment.