From 20802018a6a2bf15d33385d4e293727518a7ed63 Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow <brian.holderchow@gmail.com> Date: Wed, 17 Sep 2014 18:47:57 -0700 Subject: [PATCH] feat(bit swap) stub out a concrete strategist --- bitswap/strategy/strategy.go | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 bitswap/strategy/strategy.go diff --git a/bitswap/strategy/strategy.go b/bitswap/strategy/strategy.go new file mode 100644 index 00000000..a304669c --- /dev/null +++ b/bitswap/strategy/strategy.go @@ -0,0 +1,58 @@ +package strategy + +import ( + "errors" + + ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go" + bsmsg "github.com/jbenet/go-ipfs/bitswap/message" + "github.com/jbenet/go-ipfs/peer" + u "github.com/jbenet/go-ipfs/util" +) + +// TODO declare thread-safe datastore +func New(d ds.Datastore) Strategist { + return &strategist{ + datastore: d, + peers: ledgerMap{}, + } +} + +type strategist struct { + datastore ds.Datastore // FIXME(brian): enforce thread-safe datastore + + peers ledgerMap +} + +// Peers returns a list of this instance is connected to +func (s *strategist) Peers() []*peer.Peer { + response := make([]*peer.Peer, 0) // TODO + return response +} + +func (s *strategist) IsWantedByPeer(u.Key, *peer.Peer) bool { + return true // TODO +} + +func (s *strategist) ShouldSendToPeer(u.Key, *peer.Peer) bool { + return true // TODO +} + +func (s *strategist) Seed(int64) { + // TODO +} + +func (s *strategist) MessageReceived(*peer.Peer, bsmsg.BitSwapMessage) error { + // TODO add peer to partners if doesn't already exist. + // TODO initialize ledger for peer if doesn't already exist + // TODO get wantlist from message and update contents in local wantlist for peer + // TODO acknowledge receipt of blocks and do accounting in ledger + return errors.New("TODO") +} + +func (s *strategist) MessageSent(*peer.Peer, bsmsg.BitSwapMessage) error { + // TODO add peer to partners if doesn't already exist. + // TODO initialize ledger for peer if doesn't already exist + // TODO add block to my wantlist + // TODO acknowledge receipt of blocks and do accounting in ledger + return errors.New("TODO") +} -- GitLab