package routing import ( "time" peer "github.com/jbenet/go-ipfs/peer" u "github.com/jbenet/go-ipfs/util" ) // IpfsRouting is the routing module interface // It is implemented by things like DHTs, etc. type IpfsRouting interface { // Basic Put/Get // PutValue adds value corresponding to given Key. PutValue(key u.Key, value []byte) (error) // GetValue searches for the value corresponding to given Key. GetValue(key u.Key, timeout time.Duration) ([]byte, error) // Value provider layer of indirection. // This is what DSHTs (Coral and MainlineDHT) do to store large values in a DHT. // Announce that this node can provide value for given key Provide(key u.Key) (error) // FindProviders searches for peers who can provide the value for given key. FindProviders(key u.Key, timeout time.Duration) (*peer.Peer, error) // Find specific Peer // FindPeer searches for a peer with given ID. FindPeer(id peer.ID, timeout time.Duration) (*peer.Peer, error) }