@libp2p/interface-mocks
Version:
Mock implementations of several libp2p interfaces
47 lines • 1.34 kB
JavaScript
import { peerDiscovery } from '@libp2p/interface-peer-discovery';
import { EventEmitter } from '@libp2p/interfaces/events';
import * as PeerIdFactory from '@libp2p/peer-id-factory';
import { multiaddr } from '@multiformats/multiaddr';
/**
* Emits 'peer' events on discovery.
*/
export class MockDiscovery extends EventEmitter {
options;
_isRunning;
_timer;
constructor(init = {}) {
super();
this.options = init;
this._isRunning = false;
}
[peerDiscovery] = this;
start() {
this._isRunning = true;
this._discoverPeer();
}
stop() {
clearTimeout(this._timer);
this._isRunning = false;
}
isStarted() {
return this._isRunning;
}
_discoverPeer() {
if (!this._isRunning)
return;
PeerIdFactory.createEd25519PeerId()
.then(peerId => {
this._timer = setTimeout(() => {
this.safeDispatchEvent('peer', {
detail: {
id: peerId,
multiaddrs: [multiaddr('/ip4/127.0.0.1/tcp/8000')],
protocols: []
}
});
}, this.options.discoveryDelay ?? 1000);
})
.catch(() => { });
}
}
//# sourceMappingURL=peer-discovery.js.map