UNPKG

nats

Version:

Node.js client for NATS, a lightweight, high-performance cloud native messaging system

77 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Subscriptions = void 0; class Subscriptions { constructor() { this.sidCounter = 0; this.mux = null; this.subs = new Map(); } size() { return this.subs.size; } add(s) { this.sidCounter++; s.sid = this.sidCounter; this.subs.set(s.sid, s); return s; } setMux(s) { this.mux = s; return s; } getMux() { return this.mux; } get(sid) { return this.subs.get(sid); } resub(s) { this.sidCounter++; this.subs.delete(s.sid); s.sid = this.sidCounter; this.subs.set(s.sid, s); return s; } all() { return Array.from(this.subs.values()); } cancel(s) { if (s) { s.close(); this.subs.delete(s.sid); } } handleError(err) { if (err && err.permissionContext) { const ctx = err.permissionContext; const subs = this.all(); let sub; if (ctx.operation === "subscription") { sub = subs.find((s) => { return s.subject === ctx.subject; }); } if (ctx.operation === "publish") { // we have a no mux subscription sub = subs.find((s) => { return s.requestSubject === ctx.subject; }); } if (sub) { sub.callback(err, {}); sub.close(); this.subs.delete(sub.sid); return sub !== this.mux; } } return false; } close() { this.subs.forEach((sub) => { sub.close(); }); } } exports.Subscriptions = Subscriptions; //# sourceMappingURL=subscriptions.js.map