@libp2p/interface
Version:
The interface implemented by a libp2p node
46 lines • 1.54 kB
TypeScript
import type { Connection } from './connection.js';
import type { PeerId } from './peer-id.js';
/**
* A topology filter - this can be used by topologies to ensure they do not
* receive duplicate notifications of individual peers
*
* @see https://libp2p.github.io/js-libp2p/classes/_libp2p_peer-collections.PeerFilter.html
*/
export interface TopologyFilter {
has(peerId: PeerId): boolean;
add(peerId: PeerId): void;
remove(peerId: PeerId): void;
}
/**
* A topology is a network overlay that contains a subset of peers in the
* complete network.
*
* It is a way to be notified when peers that support a given protocol connect
* to or disconnect from the current node.
*/
export interface Topology {
/**
* An optional filter can prevent duplicate topology notifications for the
* same peer.
*/
filter?: TopologyFilter;
/**
* If true, invoke `onConnect` for this topology on limited connections, e.g.
* ones with limits on how much data can be transferred or how long they can
* be open for.
*
* @default false
*/
notifyOnLimitedConnection?: boolean;
/**
* Invoked when a new connection is opened to a peer that supports the
* registered protocol
*/
onConnect?(peerId: PeerId, conn: Connection): void | Promise<void>;
/**
* Invoked when the last connection to a peer that supports the registered
* protocol closes
*/
onDisconnect?(peerId: PeerId): void | Promise<void>;
}
//# sourceMappingURL=topology.d.ts.map