Documentation ¶
Overview ¶
Package tinder is a multi-driver service backed by a cache.
┌───────────────────────────────────────────────────┐ │ Tinder │ ┌───────────────────────┐
┌───────────────┐ │ │ ┌────▶│ Driver DHT Ipfs │ │ Advertise │▶┼───┐ ┌────────────────┐ │ │ └───────────────────────┘ └───────────────┘ │ │ │ Backoff Cache │ │ │ ┌───────────────────────┐ ┌───────────────┐ │ ├────▶│ Discover │──┐ ┌───────────────┐ │ ├────▶│ Driver DHT Berty │ │ FindPeers │▶┼───┘ └────────────────┘ │ │Driver Manager │ │ │ └───────────────────────┘ └───────────────┘ │ ┌──────────────┴──▶│ (MultiDriver) │─┼──┤ ┌───────────────────────┐ ┌───────────────┐ │ │ └───────────────┘ │ ├────▶│Driver RendezVousPoint │ │ Unregister │▶┼──────────────┘ │ │ └───────────────────────┘ └───────────────┘ │ │ │ ┌───────────────────────┐
│ │ └────▶│Driver Local (ble/mdns)│ └───────────────────────────────────────────────────┘ └───────────────────────┘
Index ¶
- Constants
- func Schedule(t time.Time) p2p_discovery.Option
- type DHTDriver
- type Driver
- func ComposeDriver(name string, advertiser p2p_discovery.Advertiser, ...) Driver
- func NewDHTDriver(d *dht.IpfsDHT) Driver
- func NewMockedDriverClient(host p2p_host.Host, server *MockDriverServer) Driver
- func NewMultiDriver(logger *zap.Logger, drivers ...Driver) Driver
- func NewRendezvousDiscovery(logger *zap.Logger, host host.Host, rdvPeer peer.ID, rng *mrand.Rand) Driver
- type MockDriverServer
- func (s *MockDriverServer) Advertise(ns string, info p2p_peer.AddrInfo, ttl time.Duration) (time.Duration, error)
- func (s *MockDriverServer) FindPeers(ns string, limit int) (<-chan p2p_peer.AddrInfo, error)
- func (s *MockDriverServer) HasPeerRecord(ns string, pid p2p_peer.ID) bool
- func (s *MockDriverServer) Reset()
- func (s *MockDriverServer) Unregister(ns string, pid p2p_peer.ID)
- type MultiDriver
- func (md *MultiDriver) Advertise(ctx context.Context, ns string, opts ...p2p_discovery.Option) (time.Duration, error)
- func (md *MultiDriver) FindPeers(ctx context.Context, ns string, opts ...p2p_discovery.Option) (<-chan p2p_peer.AddrInfo, error)
- func (*MultiDriver) Name() string
- func (md *MultiDriver) Unregister(ctx context.Context, ns string) error
- type Routing
- type Service
- type Unregisterer
Constants ¶
const ScheduleKey = "Schedule"
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DHTDriver ¶ added in v2.50.0
type DHTDriver struct { p2p_discovery.Discovery Unregisterer }
type Driver ¶
type Driver interface { p2p_discovery.Discovery Unregisterer Name() string }
Driver is a Discovery with a unregister method
func ComposeDriver ¶
func ComposeDriver(name string, advertiser p2p_discovery.Advertiser, discover p2p_discovery.Discoverer, unregister Unregisterer) Driver
func NewDHTDriver ¶
func NewMockedDriverClient ¶
func NewMockedDriverClient(host p2p_host.Host, server *MockDriverServer) Driver
type MockDriverServer ¶
type MockDriverServer struct {
// contains filtered or unexported fields
}
func NewMockedDriverServer ¶
func NewMockedDriverServer() *MockDriverServer
func (*MockDriverServer) HasPeerRecord ¶
func (s *MockDriverServer) HasPeerRecord(ns string, pid p2p_peer.ID) bool
func (*MockDriverServer) Reset ¶
func (s *MockDriverServer) Reset()
func (*MockDriverServer) Unregister ¶
func (s *MockDriverServer) Unregister(ns string, pid p2p_peer.ID)
type MultiDriver ¶
type MultiDriver struct {
// contains filtered or unexported fields
}
MultiDriver is a simple driver manager, that forward request across multiple driver
func (*MultiDriver) Advertise ¶
func (md *MultiDriver) Advertise(ctx context.Context, ns string, opts ...p2p_discovery.Option) (time.Duration, error)
Advertise simply dispatch Advertise request across all the drivers
func (*MultiDriver) FindPeers ¶
func (md *MultiDriver) FindPeers(ctx context.Context, ns string, opts ...p2p_discovery.Option) (<-chan p2p_peer.AddrInfo, error)
FindPeers for MultiDriver doesn't care about duplicate peers, his only job here is to dispatch FindPeers request across all the drivers.
func (*MultiDriver) Name ¶ added in v2.50.0
func (*MultiDriver) Name() string
func (*MultiDriver) Unregister ¶
func (md *MultiDriver) Unregister(ctx context.Context, ns string) error
type Routing ¶ added in v2.50.0
type Routing interface { p2p_routing.Routing Driver }
func NewRouting ¶ added in v2.50.0
type Service ¶
type Service interface { Driver }
Tinder service is a simple driver backed by a cache,
func NewService ¶
func NewService(logger *zap.Logger, drivers []Driver, stratFactory p2p_discovery.BackoffFactory, opts ...p2p_discovery.BackoffDiscoveryOption) (Service, error)
type Unregisterer ¶
var NoopUnregisterer Unregisterer = &noopUnregisterer{}