mirror of
https://github.com/fluencelabs/js-libp2p-interfaces
synced 2025-04-25 11:42:33 +00:00
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
'use strict'
|
|
|
|
const withIs = require('class-is')
|
|
|
|
const noop = () => {}
|
|
|
|
class Topology {
|
|
/**
|
|
* @param {Object} props
|
|
* @param {number} props.min minimum needed connections (default: 0)
|
|
* @param {number} props.max maximum needed connections (default: Infinity)
|
|
* @param {Object} [props.handlers]
|
|
* @param {function} [props.handlers.onConnect] protocol "onConnect" handler
|
|
* @param {function} [props.handlers.onDisconnect] protocol "onDisconnect" handler
|
|
* @constructor
|
|
*/
|
|
constructor ({
|
|
min = 0,
|
|
max = Infinity,
|
|
handlers = {}
|
|
}) {
|
|
this.min = min
|
|
this.max = max
|
|
|
|
// Handlers
|
|
this._onConnect = handlers.onConnect || noop
|
|
this._onDisconnect = handlers.onDisconnect || noop
|
|
|
|
this.peers = new Map()
|
|
}
|
|
|
|
set registrar (registrar) {
|
|
this._registrar = registrar
|
|
}
|
|
|
|
/**
|
|
* Notify about peer disconnected event.
|
|
* @param {PeerInfo} peerInfo
|
|
* @returns {void}
|
|
*/
|
|
disconnect (peerInfo) {
|
|
this._onDisconnect(peerInfo)
|
|
}
|
|
}
|
|
|
|
module.exports = withIs(Topology, { className: 'Topology', symbolName: '@libp2p/js-interfaces/topology' })
|