UNPKG

@jsonjoy.com/reactive-rpc

Version:

Reactive-RPC is a library for building reactive APIs over WebSocket, HTTP, and other RPCs.

39 lines 1.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BufferSubject = void 0; const rxjs_1 = require("rxjs"); const caller_1 = require("../../common/rpc/caller"); class BufferSubject extends rxjs_1.Subject { constructor(bufferSize) { super(); this.bufferSize = bufferSize; this.buffer = []; this.isBuffering = true; } _subscribe(subscriber) { this._throwIfClosed(); const subscription = this._innerSubscribe(subscriber); const { buffer } = this; for (let i = 0; i < buffer.length && !subscriber.closed; i += 1) { subscriber.next(buffer[i]); } this._checkFinalizedStatuses(subscriber); return subscription; } next(value) { if (this.isBuffering) { if (this.buffer.length >= this.bufferSize) { this.error(caller_1.RpcError.fromErrno(caller_1.RpcErrorCodes.OVERFLOW)); return; } this.buffer.push(value); } super.next(value); } flush() { this.isBuffering = false; this.buffer = []; } } exports.BufferSubject = BufferSubject; //# sourceMappingURL=BufferSubject.js.map