mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-04-24 18:12:14 +00:00
fix: expose metrics and registrar, use dht for peer discovery (#1183)
Exposes fields used by bitswap and also uses dht for peer discovery which was missed.
This commit is contained in:
parent
cc60cfde1a
commit
64bfcee509
@ -16,8 +16,8 @@ import type { ConnectionEncrypter } from '@libp2p/interfaces/connection-encrypte
|
|||||||
import type { PeerRouting } from '@libp2p/interfaces/peer-routing'
|
import type { PeerRouting } from '@libp2p/interfaces/peer-routing'
|
||||||
import type { ContentRouting } from '@libp2p/interfaces/content-routing'
|
import type { ContentRouting } from '@libp2p/interfaces/content-routing'
|
||||||
import type { PubSub } from '@libp2p/interfaces/pubsub'
|
import type { PubSub } from '@libp2p/interfaces/pubsub'
|
||||||
import type { ConnectionManager, StreamHandler } from '@libp2p/interfaces/registrar'
|
import type { ConnectionManager, Registrar, StreamHandler } from '@libp2p/interfaces/registrar'
|
||||||
import type { MetricsInit } from '@libp2p/interfaces/metrics'
|
import type { Metrics, MetricsInit } from '@libp2p/interfaces/metrics'
|
||||||
import type { PeerInfo } from '@libp2p/interfaces/peer-info'
|
import type { PeerInfo } from '@libp2p/interfaces/peer-info'
|
||||||
import type { DialerInit } from '@libp2p/interfaces/dialer'
|
import type { DialerInit } from '@libp2p/interfaces/dialer'
|
||||||
import type { KeyChain } from './keychain/index.js'
|
import type { KeyChain } from './keychain/index.js'
|
||||||
@ -152,6 +152,8 @@ export interface Libp2p extends Startable, EventEmitter<Libp2pEvents> {
|
|||||||
contentRouting: ContentRouting
|
contentRouting: ContentRouting
|
||||||
keychain: KeyChain
|
keychain: KeyChain
|
||||||
connectionManager: ConnectionManager
|
connectionManager: ConnectionManager
|
||||||
|
registrar: Registrar
|
||||||
|
metrics?: Metrics
|
||||||
|
|
||||||
pubsub?: PubSub
|
pubsub?: PubSub
|
||||||
dht?: DualDHT
|
dht?: DualDHT
|
||||||
|
@ -32,7 +32,7 @@ import type { Connection } from '@libp2p/interfaces/connection'
|
|||||||
import type { PeerRouting } from '@libp2p/interfaces/peer-routing'
|
import type { PeerRouting } from '@libp2p/interfaces/peer-routing'
|
||||||
import type { ContentRouting } from '@libp2p/interfaces/content-routing'
|
import type { ContentRouting } from '@libp2p/interfaces/content-routing'
|
||||||
import type { PubSub } from '@libp2p/interfaces/pubsub'
|
import type { PubSub } from '@libp2p/interfaces/pubsub'
|
||||||
import type { ConnectionManager, StreamHandler } from '@libp2p/interfaces/registrar'
|
import type { ConnectionManager, Registrar, StreamHandler } from '@libp2p/interfaces/registrar'
|
||||||
import type { PeerInfo } from '@libp2p/interfaces/peer-info'
|
import type { PeerInfo } from '@libp2p/interfaces/peer-info'
|
||||||
import type { Libp2p, Libp2pEvents, Libp2pInit, Libp2pOptions } from './index.js'
|
import type { Libp2p, Libp2pEvents, Libp2pInit, Libp2pOptions } from './index.js'
|
||||||
import { validateConfig } from './config.js'
|
import { validateConfig } from './config.js'
|
||||||
@ -43,6 +43,7 @@ import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
|
|||||||
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
||||||
import errCode from 'err-code'
|
import errCode from 'err-code'
|
||||||
import { unmarshalPublicKey } from '@libp2p/crypto/keys'
|
import { unmarshalPublicKey } from '@libp2p/crypto/keys'
|
||||||
|
import type { Metrics } from '@libp2p/interfaces/metrics'
|
||||||
|
|
||||||
const log = logger('libp2p')
|
const log = logger('libp2p')
|
||||||
|
|
||||||
@ -59,6 +60,8 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|||||||
public peerRouting: PeerRouting
|
public peerRouting: PeerRouting
|
||||||
public keychain: KeyChain
|
public keychain: KeyChain
|
||||||
public connectionManager: ConnectionManager
|
public connectionManager: ConnectionManager
|
||||||
|
public registrar: Registrar
|
||||||
|
public metrics?: Metrics
|
||||||
|
|
||||||
private started: boolean
|
private started: boolean
|
||||||
private readonly services: Startable[]
|
private readonly services: Startable[]
|
||||||
@ -78,7 +81,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|||||||
|
|
||||||
// Create Metrics
|
// Create Metrics
|
||||||
if (init.metrics.enabled) {
|
if (init.metrics.enabled) {
|
||||||
this.components.setMetrics(this.configureComponent(new DefaultMetrics(init.metrics)))
|
this.metrics = this.components.setMetrics(this.configureComponent(new DefaultMetrics(init.metrics)))
|
||||||
}
|
}
|
||||||
|
|
||||||
this.components.setConnectionGater(this.configureComponent({
|
this.components.setConnectionGater(this.configureComponent({
|
||||||
@ -117,7 +120,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|||||||
this.connectionManager = this.components.setConnectionManager(this.configureComponent(new DefaultConnectionManager(this.components, init.connectionManager)))
|
this.connectionManager = this.components.setConnectionManager(this.configureComponent(new DefaultConnectionManager(this.components, init.connectionManager)))
|
||||||
|
|
||||||
// Create the Registrar
|
// Create the Registrar
|
||||||
this.components.setRegistrar(this.configureComponent(new DefaultRegistrar(this.components)))
|
this.registrar = this.components.setRegistrar(this.configureComponent(new DefaultRegistrar(this.components)))
|
||||||
|
|
||||||
// Setup the transport manager
|
// Setup the transport manager
|
||||||
this.components.setTransportManager(this.configureComponent(new DefaultTransportManager(this.components, init.transportManager)))
|
this.components.setTransportManager(this.configureComponent(new DefaultTransportManager(this.components, init.transportManager)))
|
||||||
@ -180,6 +183,11 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|||||||
if (this.dht != null) {
|
if (this.dht != null) {
|
||||||
// add dht to routers
|
// add dht to routers
|
||||||
peerRouters.push(this.configureComponent(new DHTPeerRouting(this.dht)))
|
peerRouters.push(this.configureComponent(new DHTPeerRouting(this.dht)))
|
||||||
|
|
||||||
|
// use dht for peer discovery
|
||||||
|
this.dht.addEventListener('peer', (evt) => {
|
||||||
|
this.onDiscoveryPeer(evt)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
this.peerRouting = this.components.setPeerRouting(this.configureComponent(new DefaultPeerRouting(this.components, {
|
this.peerRouting = this.components.setPeerRouting(this.configureComponent(new DefaultPeerRouting(this.components, {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user