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 }