From 8f79464eba7b219492f02d94be8beae7204f1a12 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet <juan@benet.ai> Date: Tue, 22 Jul 2014 03:11:08 -0700 Subject: [PATCH] routing interface --- routing/routing.go | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/routing/routing.go b/routing/routing.go index 7ff55053..4a924018 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) +} -- GitLab