package network import ( "context" bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message" protocol "gx/ipfs/QmZNkThpqfVXs9GNbexPrfBbXSLNYeKrE7jwFM2oqHbyqN/go-libp2p-protocol" peer "gx/ipfs/QmZoWKhxUmZ2seW4BzX6fJkNR8hh9PsGModr7q171yq2SS/go-libp2p-peer" ifconnmgr "gx/ipfs/Qmax8X1Kfahf5WfSB68EWDG3d3qyS3Sqs1v412fjPTfRwx/go-libp2p-interface-connmgr" cid "gx/ipfs/QmcZfnkapfECQGcLZaf9B79NRg7cRa9EnZh4LSbkCzwNvY/go-cid" ) var ( // These two are equivalent, legacy ProtocolBitswapOne protocol.ID = "/ipfs/bitswap/1.0.0" ProtocolBitswapNoVers protocol.ID = "/ipfs/bitswap" ProtocolBitswap protocol.ID = "/ipfs/bitswap/1.1.0" ) // 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 NewMessageSender(context.Context, peer.ID) (MessageSender, error) ConnectionManager() ifconnmgr.ConnManager Routing } type MessageSender interface { SendMsg(context.Context, bsmsg.BitSwapMessage) error Close() error Reset() error } // 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, *cid.Cid, int) <-chan peer.ID // Provide provides the key to the network Provide(context.Context, *cid.Cid) error }