mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 18:37:26 +08:00
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package internal
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/libp2p/go-libp2p/core/discovery"
|
|
"github.com/libp2p/go-libp2p/core/peer"
|
|
)
|
|
|
|
type peerConnectorDiscovery struct {
|
|
connector PeerConnector
|
|
}
|
|
|
|
var _ discovery.Discovery = (*peerConnectorDiscovery)(nil)
|
|
|
|
// Advertise implements discovery.Advertiser.
|
|
func (d *peerConnectorDiscovery) Advertise(ctx context.Context, ns string, opts ...discovery.Option) (time.Duration, error) {
|
|
return time.Duration(1<<63 - 1), nil
|
|
}
|
|
|
|
// FindPeers implements discovery.Discoverer.
|
|
func (d *peerConnectorDiscovery) FindPeers(ctx context.Context, ns string, opts ...discovery.Option) (<-chan peer.AddrInfo, error) {
|
|
if err := d.connector.Connect(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
ch := make(chan peer.AddrInfo)
|
|
close(ch)
|
|
return ch, nil
|
|
}
|
|
|
|
// NewPeerConnectorDiscovery creates a new peer connector discovery.
|
|
// The discovery instance does not do any advertisements and just triggers
|
|
// the peer connector once FindPeers is called.
|
|
func NewPeerConnectorDiscovery(connector PeerConnector) discovery.Discovery {
|
|
return &peerConnectorDiscovery{connector: connector}
|
|
}
|