queueueue
Version:
Convert push-based streams to pull-based async iterables (fork of queueable)
24 lines (23 loc) • 724 B
TypeScript
import { PushAdapter } from '../common';
/**
* Multicasts pushed values to a variable number of async iterable iterators
* as receivers or subscribers.
*
* Does not buffer pushed values; if no receivers are registered, pushed
* values are silently discarded.
*/
export default class Multicast<A> implements AsyncIterable<A> {
private readonly init;
onStart?(): void;
onStop?(): void;
readonly receivers: Set<PushAdapter<A>>;
constructor(init?: () => PushAdapter<A>);
/**
* Pushes a value to all registered receivers.
*/
push(value: A): this;
/**
* Creates and registers a receiver.
*/
[](): AsyncIterableIterator<A>;
}