package network import ( key "github.com/ipfs/go-ipfs/blocks/key" bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message" protocol "gx/ipfs/QmUHrgorZ1F9yGkgF2His5fsQ9xtCzjdsPGjizmcEW94i5/go-libp2p/p2p/protocol" peer "gx/ipfs/QmZpD74pUj6vuxTp1o6LhA3JavC2Bvh9fsWPPVvHnD9sE7/go-libp2p-peer" context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" ) var ProtocolBitswap protocol.ID = "/ipfs/bitswap" // BitSwapNetwork provides network connectivity for BitSwap sessions type BitSwapNetwork interface { // SendMessage sends a BitSwap message to a peer. SendMessage( context.Context, peer.ID, bsmsg.BitSwapMessage) error // SetDelegate registers the Reciver to handle messages received from the // network. SetDelegate(Receiver) ConnectTo(context.Context, peer.ID) error Routing } // Implement Receiver to receive messages from the BitSwapNetwork type Receiver interface { ReceiveMessage( ctx context.Context, sender peer.ID, incoming bsmsg.BitSwapMessage) ReceiveError(error) // Connected/Disconnected warns bitswap about peer connections PeerConnected(peer.ID) PeerDisconnected(peer.ID) } type Routing interface { // FindProvidersAsync returns a channel of providers for the given key FindProvidersAsync(context.Context, key.Key, int) <-chan peer.ID // Provide provides the key to the network Provide(context.Context, key.Key) error }