pkg/discovery/routing/interface.go (17 lines of code) (raw):

// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. package routing import ( "context" "github.com/azure/peerd/pkg/peernet" "github.com/libp2p/go-libp2p/core/peer" ) // Router provides a content routing interface to the network. type Router interface { // Net returns the network interface. Net() peernet.Network // Resolve resolves the given key to a peer address. Resolve(ctx context.Context, key string, allowSelf bool, count int) (<-chan PeerInfo, error) // ResolveWithNegativeCacheCallback is like Resolve but it also returns a function callback that can be used to cache that a key could not be resolved. ResolveWithNegativeCacheCallback(ctx context.Context, key string, allowSelf bool, count int) (<-chan PeerInfo, func(), error) // Provide provides the given keys to the network. // This lets the k-closest peers to the key know that we are providing it. Provide(ctx context.Context, keys []string) error // Close closes the router. Close() error } // PeerInfo describes a peer. type PeerInfo struct { peer.ID // HttpHost is the HTTP host of the peer. HttpHost string }