mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 18:37:45 +08:00
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package libp2p
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/ipfs/go-datastore"
|
|
host "github.com/libp2p/go-libp2p-core/host"
|
|
"github.com/libp2p/go-libp2p-core/peer"
|
|
routing "github.com/libp2p/go-libp2p-core/routing"
|
|
dht "github.com/libp2p/go-libp2p-kad-dht"
|
|
dual "github.com/libp2p/go-libp2p-kad-dht/dual"
|
|
record "github.com/libp2p/go-libp2p-record"
|
|
routinghelpers "github.com/libp2p/go-libp2p-routing-helpers"
|
|
)
|
|
|
|
type RoutingOption func(
|
|
context.Context,
|
|
host.Host,
|
|
datastore.Batching,
|
|
record.Validator,
|
|
...peer.AddrInfo,
|
|
) (routing.Routing, error)
|
|
|
|
func constructDHTRouting(mode dht.ModeOpt) func(
|
|
ctx context.Context,
|
|
host host.Host,
|
|
dstore datastore.Batching,
|
|
validator record.Validator,
|
|
bootstrapPeers ...peer.AddrInfo,
|
|
) (routing.Routing, error) {
|
|
return func(
|
|
ctx context.Context,
|
|
host host.Host,
|
|
dstore datastore.Batching,
|
|
validator record.Validator,
|
|
bootstrapPeers ...peer.AddrInfo,
|
|
) (routing.Routing, error) {
|
|
return dual.New(
|
|
ctx, host,
|
|
dual.DHTOption(
|
|
dht.Concurrency(10),
|
|
dht.Mode(mode),
|
|
dht.Datastore(dstore),
|
|
dht.Validator(validator)),
|
|
dual.WanDHTOption(dht.BootstrapPeers(bootstrapPeers...)),
|
|
)
|
|
}
|
|
}
|
|
|
|
func constructNilRouting(
|
|
ctx context.Context,
|
|
host host.Host,
|
|
dstore datastore.Batching,
|
|
validator record.Validator,
|
|
bootstrapPeers ...peer.AddrInfo,
|
|
) (routing.Routing, error) {
|
|
return routinghelpers.Null{}, nil
|
|
}
|
|
|
|
var (
|
|
DHTOption RoutingOption = constructDHTRouting(dht.ModeAuto)
|
|
DHTClientOption = constructDHTRouting(dht.ModeClient)
|
|
DHTServerOption = constructDHTRouting(dht.ModeServer)
|
|
NilRouterOption = constructNilRouting
|
|
)
|