github.com/zignig/go-ipfs@v0.0.0-20141111235910-c9e5fdf55a52/exchange/bitswap/strategy/interface.go (about) 1 package strategy 2 3 import ( 4 bsmsg "github.com/jbenet/go-ipfs/exchange/bitswap/message" 5 peer "github.com/jbenet/go-ipfs/peer" 6 u "github.com/jbenet/go-ipfs/util" 7 ) 8 9 type Strategy interface { 10 // Returns a slice of Peers with whom the local node has active sessions 11 Peers() []peer.Peer 12 13 // BlockIsWantedByPeer returns true if peer wants the block given by this 14 // key 15 BlockIsWantedByPeer(u.Key, peer.Peer) bool 16 17 // ShouldSendTo(Peer) decides whether to send data to this Peer 18 ShouldSendBlockToPeer(u.Key, peer.Peer) bool 19 20 // Seed initializes the decider to a deterministic state 21 Seed(int64) 22 23 // MessageReceived records receipt of message for accounting purposes 24 MessageReceived(peer.Peer, bsmsg.BitSwapMessage) error 25 26 // MessageSent records sending of message for accounting purposes 27 MessageSent(peer.Peer, bsmsg.BitSwapMessage) error 28 29 NumBytesSentTo(peer.Peer) uint64 30 31 NumBytesReceivedFrom(peer.Peer) uint64 32 }