chore: add modularity to getting connected peers

This commit is contained in:
Danish Arora 2024-09-25 14:50:27 +05:30
parent be7a0b05ec
commit aec9451486
No known key found for this signature in database
GPG Key ID: 1C6EF37CDAE1426E
2 changed files with 8 additions and 5 deletions

View File

@ -56,15 +56,18 @@ export class BaseProtocol implements IBaseProtocolCore {
return getPeersForProtocol(this.components.peerStore, [this.multicodec]);
}
public async connectedPeers(): Promise<Peer[]> {
public async connectedPeers(withOpenStreams = false): Promise<Peer[]> {
const peers = await this.allPeers();
return peers.filter((peer) => {
const connections = this.components.connectionManager.getConnections(
peer.id
);
return connections.some((c) =>
c.streams.some((s) => s.protocol === this.multicodec)
);
if (withOpenStreams) {
return connections.some((c) =>
c.streams.some((s) => s.protocol === this.multicodec)
);
}
return connections.length > 0;
});
}

View File

@ -17,7 +17,7 @@ export enum Protocols {
export type IBaseProtocolCore = {
multicodec: string;
allPeers: () => Promise<Peer[]>;
connectedPeers: () => Promise<Peer[]>;
connectedPeers: (withOpenStreams?: boolean) => Promise<Peer[]>;
addLibp2pEventListener: Libp2p["addEventListener"];
removeLibp2pEventListener: Libp2p["removeEventListener"];
};