core block service
Juan Batiz-Benet committed
Jul 5, 2014 at 15:38 UTC
cd1d4d44552665bc884aca6722f3ece8c675841c
1 file changed
+24
-1
core/core.go
+24
-1
@@ -3,8 +3,11 @@ package core
3
import (
4
"fmt"
5
ds "github.com/jbenet/datastore.go"
6
+ blocks "github.com/jbenet/go-ipfs/blocks"
7
config "github.com/jbenet/go-ipfs/config"
8
+ merkledag "github.com/jbenet/go-ipfs/merkledag"
9
peer "github.com/jbenet/go-ipfs/peer"
10
+ u "github.com/jbenet/go-ipfs/util"
11
)
12
13
// IPFS Core module. It represents an IPFS instance.
@@ -33,7 +36,7 @@ type IpfsNode struct {
36
// BitSwap *bitswap.BitSwap
37
38
// the block service, get/add blocks.
36
- // Blocks *blocks.BlockService
39
+ Blocks *blocks.BlockService
40
41
// the path resolution system
42
// Resolver *resolver.PathResolver
@@ -52,11 +55,31 @@ func NewIpfsNode(cfg *config.Config) (*IpfsNode, error) {
55
return nil, err
56
}
57
58
+ bs, err := blocks.NewBlockService(d)
59
+ if err != nil {
60
+ return nil, err
61
+ }
62
+
63
n := &IpfsNode{
64
Config: cfg,
65
PeerBook: &peer.PeerBook{},
66
Datastore: d,
67
+ Blocks: bs,
68
}
69
70
return n, nil
71
}
72
+
73
+func (n *IpfsNode) AddDagNode(nd *merkledag.Node) (u.Key, error) {
74
+ d, err := nd.Encoded(false)
75
+ if err != nil {
76
+ return "", err
77
+ }
78
+
79
+ b, err := blocks.NewBlock(d)
80
+ if err != nil {
81
+ return "", err
82
+ }
83
+
84
+ return n.Blocks.AddBlock(b)
85
+}