diff --git a/routing/routing.go b/routing/routing.go index 7ff550539fdab664325e92961ae4606cdd922e88..4a924018146f7287cc3855152ea2f6e7b30c4d48 100644 --- a/routing/routing.go +++ b/routing/routing.go @@ -1,4 +1,36 @@ package routing +import ( + "time" + peer "github.com/jbenet/go-ipfs/peer" + u "github.com/jbenet/go-ipfs/util" +) -// TODO SEE https://github.com/jbenet/node-ipfs/blob/master/submodules/ipfs-routing/index.js +// 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) +}