diff --git a/packages/interface-connection-manager/src/index.ts b/packages/interface-connection-manager/src/index.ts index 23f4f3827..d7f849ec4 100644 --- a/packages/interface-connection-manager/src/index.ts +++ b/packages/interface-connection-manager/src/index.ts @@ -4,6 +4,15 @@ import type { Connection, MultiaddrConnection } from '@libp2p/interface-connecti import type { PeerId } from '@libp2p/interface-peer-id' import type { Multiaddr } from '@multiformats/multiaddr' +export type PendingDialStatus = 'queued' | 'active' | 'error' | 'success' + +export interface PendingDial { + id: string + status: PendingDialStatus + peerId?: PeerId + multiaddrs: Multiaddr[] +} + export interface ConnectionManagerEvents { /** * This event will be triggered any time a new Connection is established to another peer. @@ -93,4 +102,15 @@ export interface ConnectionManager extends EventEmitter * Invoked after upgrading a multiaddr connection has finished */ afterUpgradeInbound: () => void + + /** + * Return the list of in-progress or queued dials + * + * @example + * + * ```js + * const dials = libp2p.connectionManager.getDialQueue() + * ``` + */ + getDialQueue: () => PendingDial[] } diff --git a/packages/interface-mocks/src/connection-manager.ts b/packages/interface-mocks/src/connection-manager.ts index 6165f7988..9fd57280c 100644 --- a/packages/interface-mocks/src/connection-manager.ts +++ b/packages/interface-mocks/src/connection-manager.ts @@ -2,7 +2,7 @@ import { EventEmitter } from '@libp2p/interfaces/events' import type { Startable } from '@libp2p/interfaces/startable' import type { Connection } from '@libp2p/interface-connection' import { isPeerId, PeerId } from '@libp2p/interface-peer-id' -import type { ConnectionManager, ConnectionManagerEvents } from '@libp2p/interface-connection-manager' +import type { ConnectionManager, ConnectionManagerEvents, PendingDial } from '@libp2p/interface-connection-manager' import { connectionPair } from './connection.js' import { CodeError } from '@libp2p/interfaces/errors' import type { Registrar } from '@libp2p/interface-registrar' @@ -173,6 +173,10 @@ class MockConnectionManager extends EventEmitter implem afterUpgradeInbound (): void { } + + getDialQueue (): PendingDial[] { + return [] + } } export function mockConnectionManager (components: MockConnectionManagerComponents): ConnectionManager {