24 lines
687 B
JavaScript
24 lines
687 B
JavaScript
|
|
"use strict";
|
||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
|
exports.WaitQueue = void 0;
|
||
|
|
const linked_list_1 = require("../client/linked-list");
|
||
|
|
class WaitQueue {
|
||
|
|
#list = new linked_list_1.SinglyLinkedList();
|
||
|
|
#queue = new linked_list_1.SinglyLinkedList();
|
||
|
|
push(value) {
|
||
|
|
const resolve = this.#queue.shift();
|
||
|
|
if (resolve !== undefined) {
|
||
|
|
resolve(value);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
this.#list.push(value);
|
||
|
|
}
|
||
|
|
shift() {
|
||
|
|
return this.#list.shift();
|
||
|
|
}
|
||
|
|
wait() {
|
||
|
|
return new Promise(resolve => this.#queue.push(resolve));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
exports.WaitQueue = WaitQueue;
|
||
|
|
//# sourceMappingURL=wait-queue.js.map
|