feat(bit swap) stub out a concrete strategist
Brian Tiger Chow committed
Sep 17, 2014 at 18:47 UTC
20802018a6a2bf15d33385d4e293727518a7ed63
1 file changed
+58
bitswap/strategy/strategy.go
new
+58
@@ -0,0 +1,58 @@
1
+package strategy
2
+
3
+import (
4
+ "errors"
5
+
6
+ ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
7
+ bsmsg "github.com/jbenet/go-ipfs/bitswap/message"
8
+ "github.com/jbenet/go-ipfs/peer"
9
+ u "github.com/jbenet/go-ipfs/util"
10
+)
11
+
12
+// TODO declare thread-safe datastore
13
+func New(d ds.Datastore) Strategist {
14
+ return &strategist{
15
+ datastore: d,
16
+ peers: ledgerMap{},
17
+ }
18
+}
19
+
20
+type strategist struct {
21
+ datastore ds.Datastore // FIXME(brian): enforce thread-safe datastore
22
+
23
+ peers ledgerMap
24
+}
25
+
26
+// Peers returns a list of this instance is connected to
27
+func (s *strategist) Peers() []*peer.Peer {
28
+ response := make([]*peer.Peer, 0) // TODO
29
+ return response
30
+}
31
+
32
+func (s *strategist) IsWantedByPeer(u.Key, *peer.Peer) bool {
33
+ return true // TODO
34
+}
35
+
36
+func (s *strategist) ShouldSendToPeer(u.Key, *peer.Peer) bool {
37
+ return true // TODO
38
+}
39
+
40
+func (s *strategist) Seed(int64) {
41
+ // TODO
42
+}
43
+
44
+func (s *strategist) MessageReceived(*peer.Peer, bsmsg.BitSwapMessage) error {
45
+ // TODO add peer to partners if doesn't already exist.
46
+ // TODO initialize ledger for peer if doesn't already exist
47
+ // TODO get wantlist from message and update contents in local wantlist for peer
48
+ // TODO acknowledge receipt of blocks and do accounting in ledger
49
+ return errors.New("TODO")
50
+}
51
+
52
+func (s *strategist) MessageSent(*peer.Peer, bsmsg.BitSwapMessage) error {
53
+ // TODO add peer to partners if doesn't already exist.
54
+ // TODO initialize ledger for peer if doesn't already exist
55
+ // TODO add block to my wantlist
56
+ // TODO acknowledge receipt of blocks and do accounting in ledger
57
+ return errors.New("TODO")
58
+}