@libp2p/interface
Version:
The interface implemented by a libp2p node
55 lines • 1.77 kB
TypeScript
import type { Direction, Stream } from './connection.js';
import type { AbortOptions } from './index.js';
import type { Duplex } from 'it-stream-types';
import type { Uint8ArrayList } from 'uint8arraylist';
export interface StreamMuxerFactory {
/**
* The protocol used to select this muxer during connection opening
*/
protocol: string;
/**
* Creates a new stream muxer to be used with a new connection
*/
createStreamMuxer(init?: StreamMuxerInit): StreamMuxer;
}
/**
* A libp2p stream muxer
*/
export interface StreamMuxer extends Duplex<AsyncGenerator<Uint8Array | Uint8ArrayList>> {
/**
* The protocol used to select this muxer during connection opening
*/
protocol: string;
/**
* A list of streams that are currently open. Closed streams will not be returned.
*/
readonly streams: Stream[];
/**
* Initiate a new stream with the given name. If no name is
* provided, the id of the stream will be used.
*/
newStream(name?: string): Stream | Promise<Stream>;
/**
* Close or abort all tracked streams and stop the muxer
*/
close(options?: AbortOptions): Promise<void>;
/**
* Close or abort all tracked streams and stop the muxer
*/
abort(err: Error): void;
}
export interface StreamMuxerInit {
/**
* A callback function invoked every time an incoming stream is opened
*/
onIncomingStream?(stream: Stream): void;
/**
* A callback function invoke every time a stream ends
*/
onStreamEnd?(stream: Stream): void;
/**
* Outbound stream muxers are opened by the local node, inbound stream muxers are opened by the remote
*/
direction?: Direction;
}
//# sourceMappingURL=stream-muxer.d.ts.map