chore: choose peers from the connected pool, instead of dialing them

This commit is contained in:
Danish Arora 2024-08-06 13:31:53 +07:00
parent a69d0c252a
commit be9588d90e
No known key found for this signature in database
GPG Key ID: 1C6EF37CDAE1426E
2 changed files with 16 additions and 12 deletions

View File

@ -23,6 +23,12 @@ type GetPeersOptions = {
maxBootstrapPeers: number;
};
const DEFAULT_GET_PEERS_OPTIONS: GetPeersOptions = {
prioritizeLatency: true,
maxBootstrapPeers: 1,
numPeers: 0
};
/**
* A class with predefined helpers, to be used as a base to implement Waku
* Protocols.
@ -90,11 +96,7 @@ export class BaseProtocol implements IBaseProtocolCore {
* @returns A list of peers that support the protocol sorted by latency.
*/
public async getPeers(
options: GetPeersOptions = {
prioritizeLatency: true,
maxBootstrapPeers: 1,
numPeers: 0
}
options: GetPeersOptions = DEFAULT_GET_PEERS_OPTIONS
): Promise<Peer[]> {
const { maxBootstrapPeers, numPeers, prioritizeLatency } = options;

View File

@ -198,11 +198,6 @@ export class BaseProtocolSDK implements IBaseProtocolSDK {
this.log.info(`Finding and adding ${numPeers} new peers`);
try {
const additionalPeers = await this.findAdditionalPeers(numPeers);
const dials = additionalPeers.map((peer) =>
this.connectionManager.attemptDial(peer.id)
);
await Promise.all(dials);
const updatedPeers = [...this.peers, ...additionalPeers];
this.updatePeers(updatedPeers);
@ -227,10 +222,17 @@ export class BaseProtocolSDK implements IBaseProtocolSDK {
private async findAdditionalPeers(numPeers: number): Promise<Peer[]> {
this.log.info(`Finding ${numPeers} additional peers`);
try {
let newPeers = await this.core.allPeers();
let newPeers = await this.core.getPeers({
maxBootstrapPeers: 0,
numPeers: 0
});
if (newPeers.length === 0) {
this.log.warn("No new peers found.");
this.log.warn("No new peers found, trying with bootstrap peers");
newPeers = await this.core.getPeers({
maxBootstrapPeers: numPeers,
numPeers: 0
});
}
newPeers = newPeers