syncable-server
Version:
Syncable server.
36 lines • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class ObjectQueue {
constructor() {
this.channelToPendingObjectsMap = new Map();
}
add(object) {
let channel = this.resolveChannel(object);
let pendingObjects = this.channelToPendingObjectsMap.get(channel);
if (pendingObjects) {
pendingObjects.push(object);
}
else {
this.emit(object);
}
}
pause(channel) {
if (!this.channelToPendingObjectsMap.has(channel)) {
this.channelToPendingObjectsMap.set(channel, []);
}
}
resume(channel, filter) {
let pendingObjects = this.channelToPendingObjectsMap.get(channel);
if (!pendingObjects) {
return;
}
for (let object of pendingObjects) {
if (!filter || filter(object)) {
this.emit(object);
}
}
this.channelToPendingObjectsMap.delete(channel);
}
}
exports.ObjectQueue = ObjectQueue;
//# sourceMappingURL=object-queue.js.map