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