@cryptotaxi247 / kubo / commits / 20802018a

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 +}