@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
JavaScript
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
;