github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/exchange/bitswap/network/interface.go (about) 1 package network 2 3 import ( 4 context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context" 5 key "github.com/ipfs/go-ipfs/blocks/key" 6 bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message" 7 peer "github.com/ipfs/go-ipfs/p2p/peer" 8 protocol "github.com/ipfs/go-ipfs/p2p/protocol" 9 ) 10 11 var ProtocolBitswap protocol.ID = "/ipfs/bitswap" 12 13 // BitSwapNetwork provides network connectivity for BitSwap sessions 14 type BitSwapNetwork interface { 15 16 // SendMessage sends a BitSwap message to a peer. 17 SendMessage( 18 context.Context, 19 peer.ID, 20 bsmsg.BitSwapMessage) error 21 22 // SetDelegate registers the Reciver to handle messages received from the 23 // network. 24 SetDelegate(Receiver) 25 26 ConnectTo(context.Context, peer.ID) error 27 28 Routing 29 } 30 31 // Implement Receiver to receive messages from the BitSwapNetwork 32 type Receiver interface { 33 ReceiveMessage( 34 ctx context.Context, 35 sender peer.ID, 36 incoming bsmsg.BitSwapMessage) 37 38 ReceiveError(error) 39 40 // Connected/Disconnected warns bitswap about peer connections 41 PeerConnected(peer.ID) 42 PeerDisconnected(peer.ID) 43 } 44 45 type Routing interface { 46 // FindProvidersAsync returns a channel of providers for the given key 47 FindProvidersAsync(context.Context, key.Key, int) <-chan peer.ID 48 49 // Provide provides the key to the network 50 Provide(context.Context, key.Key) error 51 }