routing.go 995 Bytes
Newer Older
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
1 2
package routing

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
3 4 5 6 7
import (
  "time"
  peer "github.com/jbenet/go-ipfs/peer"
  u "github.com/jbenet/go-ipfs/util"
)
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
8

Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
// 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)
}