diff --git a/packages/interface-connection-manager/src/index.ts b/packages/interface-connection-manager/src/index.ts index 2a2e5266c..f9be83631 100644 --- a/packages/interface-connection-manager/src/index.ts +++ b/packages/interface-connection-manager/src/index.ts @@ -76,4 +76,18 @@ export interface ConnectionManager { * ``` */ getDialQueue: () => PendingDial[] + + /** + * Cancel a pending dial by removing it from the queue and rejecting all promises associated with it + * + * @param {string} id - The id of the dial to cancel + * + * @example + * + * ```js + * const dialId = libp2p.connectionManager.getDialQueue()[0].id + * libp2p.connectionManager.cancelDial(dial-id) + * ``` + */ + cancelDial: (id: string) => void } diff --git a/packages/interface-libp2p/src/index.ts b/packages/interface-libp2p/src/index.ts index abb8d4c1b..2d714afe0 100644 --- a/packages/interface-libp2p/src/index.ts +++ b/packages/interface-libp2p/src/index.ts @@ -444,6 +444,18 @@ export interface Libp2p extends Startable, EventEmitter { */ getDialQueue: () => PendingDial[] + /** + * Cancel a pending dial by its id + * + * @example + * + * ```js + * const dialId = libp2p.getDialQueue()[0].id + * libp2p.cancelDial(dialId) + * ``` + */ + cancelDial: (id: string) => void + /** * Return a list of all peers we currently have a connection open to */ diff --git a/packages/interface-mocks/src/connection-manager.ts b/packages/interface-mocks/src/connection-manager.ts index 416eaf90b..6def0b2ce 100644 --- a/packages/interface-mocks/src/connection-manager.ts +++ b/packages/interface-mocks/src/connection-manager.ts @@ -192,6 +192,8 @@ class MockConnectionManager implements ConnectionManager, Startable { getDialQueue (): PendingDial[] { return [] } + + cancelDial (): void {} } export function mockConnectionManager (components: MockConnectionManagerComponents): ConnectionManager {