github.com/zignig/go-ipfs@v0.0.0-20141111235910-c9e5fdf55a52/exchange/bitswap/network/interface.go (about)

     1  package network
     2  
     3  import (
     4  	context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
     5  
     6  	bsmsg "github.com/jbenet/go-ipfs/exchange/bitswap/message"
     7  	peer "github.com/jbenet/go-ipfs/peer"
     8  	u "github.com/jbenet/go-ipfs/util"
     9  )
    10  
    11  // Adapter provides network connectivity for BitSwap sessions
    12  type Adapter interface {
    13  
    14  	// DialPeer ensures there is a connection to peer.
    15  	DialPeer(context.Context, peer.Peer) error
    16  
    17  	// SendMessage sends a BitSwap message to a peer.
    18  	SendMessage(
    19  		context.Context,
    20  		peer.Peer,
    21  		bsmsg.BitSwapMessage) error
    22  
    23  	// SendRequest sends a BitSwap message to a peer and waits for a response.
    24  	SendRequest(
    25  		context.Context,
    26  		peer.Peer,
    27  		bsmsg.BitSwapMessage) (incoming bsmsg.BitSwapMessage, err error)
    28  
    29  	// SetDelegate registers the Reciver to handle messages received from the
    30  	// network.
    31  	SetDelegate(Receiver)
    32  }
    33  
    34  type Receiver interface {
    35  	ReceiveMessage(
    36  		ctx context.Context, sender peer.Peer, incoming bsmsg.BitSwapMessage) (
    37  		destination peer.Peer, outgoing bsmsg.BitSwapMessage)
    38  
    39  	ReceiveError(error)
    40  }
    41  
    42  // TODO rename -> Router?
    43  type Routing interface {
    44  	// FindProvidersAsync returns a channel of providers for the given key
    45  	FindProvidersAsync(context.Context, u.Key, int) <-chan peer.Peer
    46  
    47  	// Provide provides the key to the network
    48  	Provide(context.Context, u.Key) error
    49  }