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  }