// package exchange defines the IPFS Exchange interface package exchange import ( "context" "io" blocks "github.com/ipfs/go-ipfs/blocks" cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid" ) // Any type that implements exchange.Interface may be used as an IPFS block // exchange protocol. type Interface interface { // type Exchanger interface // GetBlock returns the block associated with a given key. GetBlock(context.Context, *cid.Cid) (blocks.Block, error) GetBlocks(context.Context, []*cid.Cid) (<-chan blocks.Block, error) // TODO Should callers be concerned with whether the block was made // available on the network? HasBlock(blocks.Block) error IsOnline() bool io.Closer }