Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-merkledag
Commits
0244e50b
Unverified
Commit
0244e50b
authored
Aug 10, 2018
by
Kevin Atkinson
Committed by
GitHub
Aug 10, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6 from ipfs/kevina/builder
Update to use new Builder interface for creating CIDs.
parents
4d2a12ab
70cb3dd8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
24 additions
and
28 deletions
+24
-28
coding.go
coding.go
+2
-5
node.go
node.go
+18
-15
raw.go
raw.go
+4
-8
No files found.
coding.go
View file @
0244e50b
...
...
@@ -93,10 +93,7 @@ func (n *ProtoNode) EncodeProtobuf(force bool) ([]byte, error) {
}
if
n
.
cached
==
nil
{
if
n
.
Prefix
.
Codec
==
0
{
// unset
n
.
Prefix
=
v0CidPrefix
}
c
,
err
:=
n
.
Prefix
.
Sum
(
n
.
encoded
)
c
,
err
:=
n
.
CidBuilder
()
.
Sum
(
n
.
encoded
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -134,7 +131,7 @@ func DecodeProtobufBlock(b blocks.Block) (ipld.Node, error) {
}
decnd
.
cached
=
c
decnd
.
Prefix
=
c
.
Prefix
()
decnd
.
SetCidBuilder
(
c
.
Prefix
()
)
return
decnd
,
nil
}
...
...
node.go
View file @
0244e50b
...
...
@@ -27,8 +27,8 @@ type ProtoNode struct {
cached
*
cid
.
Cid
//
Prefix
specifies cid version and hashing function
Prefix
cid
.
Prefix
//
builder
specifies cid version and hashing function
builder
cid
.
Builder
}
var
v0CidPrefix
=
cid
.
Prefix
{
...
...
@@ -63,14 +63,21 @@ func PrefixForCidVersion(version int) (cid.Prefix, error) {
}
}
// SetPrefix sets the CID prefix if it is non nil, if prefix is nil then
// it resets it the default value
func
(
n
*
ProtoNode
)
SetPrefix
(
prefix
*
cid
.
Prefix
)
{
if
prefix
==
nil
{
n
.
Prefix
=
v0CidPrefix
// CidBuilder returns the CID Builder for this ProtoNode, it is never nil
func
(
n
*
ProtoNode
)
CidBuilder
()
cid
.
Builder
{
if
n
.
builder
==
nil
{
n
.
builder
=
v0CidPrefix
}
return
n
.
builder
}
// SetCidBuilder sets the CID builder if it is non nil, if nil then it
// is reset to the default value
func
(
n
*
ProtoNode
)
SetCidBuilder
(
builder
cid
.
Builder
)
{
if
builder
==
nil
{
n
.
builder
=
v0CidPrefix
}
else
{
n
.
Prefix
=
*
prefix
n
.
Prefix
.
Codec
=
cid
.
DagProtobuf
n
.
builder
=
builder
.
WithCodec
(
cid
.
DagProtobuf
)
n
.
encoded
=
nil
n
.
cached
=
nil
}
...
...
@@ -191,7 +198,7 @@ func (n *ProtoNode) Copy() ipld.Node {
copy
(
nnode
.
links
,
n
.
links
)
}
nnode
.
Prefix
=
n
.
Prefix
nnode
.
builder
=
n
.
builder
return
nnode
}
...
...
@@ -301,11 +308,7 @@ func (n *ProtoNode) Cid() *cid.Cid {
return
n
.
cached
}
if
n
.
Prefix
.
Codec
==
0
{
n
.
SetPrefix
(
nil
)
}
c
,
err
:=
n
.
Prefix
.
Sum
(
n
.
RawData
())
c
,
err
:=
n
.
builder
.
Sum
(
n
.
RawData
())
if
err
!=
nil
{
// programmer error
err
=
fmt
.
Errorf
(
"invalid CID of length %d: %x: %v"
,
len
(
n
.
RawData
()),
n
.
RawData
(),
err
)
...
...
raw.go
View file @
0244e50b
...
...
@@ -34,14 +34,10 @@ func DecodeRawBlock(block blocks.Block) (ipld.Node, error) {
var
_
ipld
.
DecodeBlockFunc
=
DecodeRawBlock
// NewRawNodeWPrefix creates a RawNode with the hash function
// specified in prefix.
func
NewRawNodeWPrefix
(
data
[]
byte
,
prefix
cid
.
Prefix
)
(
*
RawNode
,
error
)
{
prefix
.
Codec
=
cid
.
Raw
if
prefix
.
Version
==
0
{
prefix
.
Version
=
1
}
c
,
err
:=
prefix
.
Sum
(
data
)
// NewRawNodeWPrefix creates a RawNode using the provided cid builder
func
NewRawNodeWPrefix
(
data
[]
byte
,
builder
cid
.
Builder
)
(
*
RawNode
,
error
)
{
builder
=
builder
.
WithCodec
(
cid
.
Raw
)
c
,
err
:=
builder
.
Sum
(
data
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment