UNPKG

@libp2p/interface-internal

Version:
102 lines (89 loc) 3.1 kB
import type { AbortOptions, Connection, Listener, Transport, TransportManagerDialProgressEvents } from '@libp2p/interface' import type { Multiaddr } from '@multiformats/multiaddr' import type { ProgressOptions } from 'progress-events' /** * Options for dialing a connection using the `TransportManager`. */ export interface TransportManagerDialOptions extends AbortOptions, ProgressOptions<TransportManagerDialProgressEvents> { } /** * The `TransportManager` handles the management of network transports, allowing * opening connections or listening using specific transports, etc. * * This is a low-level component - any connections opened will not be managed by * the `ConnectionManager` or included in any configured connection limits, etc. * * Most consumers will call `openConnection` on the `ConnectionManager` instead. */ export interface TransportManager { /** * Add a transport to the transport manager. * * @param transport - The transport instance to be added. */ add(transport: Transport): void /** * Dial a multiaddr. Connections returned by this method will not be tracked * by the connection manager so can cause memory leaks. If you need to dial * a multiaddr, you may want to call openConnection on the connection manager * instead. * * @param ma - The multiaddr to dial. * @param options - Optional dial options. * @returns A promise that resolves to a `Connection` object. */ dial(ma: Multiaddr, options?: TransportManagerDialOptions): Promise<Connection> /** * Return all addresses currently being listened on * * @returns An array of `Multiaddr` objects. */ getAddrs(): Multiaddr[] /** * Return all registered transports * * @returns An array of `Transport` instances. */ getTransports(): Transport[] /** * Return all listeners * * @returns An array of `Listener` instances. */ getListeners(): Listener[] /** * Get the transport to dial a given multiaddr, if one has been configured * * @param ma - The target multiaddr. * @returns A `Transport` instance if available, otherwise `undefined`. */ dialTransportForMultiaddr(ma: Multiaddr): Transport | undefined /** * Get the transport to listen on a given multiaddr, if one has been * configured * * @param ma - The target multiaddr. * @returns A `Transport` instance if available, otherwise `undefined`. */ listenTransportForMultiaddr(ma: Multiaddr): Transport | undefined /** * Listen on the passed multiaddrs * * @param addrs - An array of multiaddrs to listen on. * @returns A promise that resolves once the transport is actively listening. */ listen(addrs: Multiaddr[]): Promise<void> /** * Remove a previously configured transport * * @param key - The transport key or identifier. * @returns A promise that resolves once the transport is removed. */ remove(key: string): Promise<void> /** * Remove all transports * * @returns A promise that resolves once all transports are removed. */ removeAll(): Promise<void> }