⚝
One Hat Cyber Team
⚝
Your IP:
172.22.0.1
Server IP:
151.80.20.34
Server:
Linux 794f04d97d5e 5.15.0-143-generic #153-Ubuntu SMP Fri Jun 13 19:10:45 UTC 2025 x86_64
Server Software:
Apache/2.4.62 (Debian)
PHP Version:
8.2.28
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
nodejs
/
jest-worker
/
build
/
View File Name :
FifoQueue.js
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; /** * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ /** * First-in, First-out task queue that manages a dedicated pool * for each worker as well as a shared queue. The FIFO ordering is guaranteed * across the worker specific and shared queue. */ class FifoQueue { _workerQueues = []; _sharedQueue = new InternalQueue(); enqueue(task, workerId) { if (workerId == null) { this._sharedQueue.enqueue(task); return; } let workerQueue = this._workerQueues[workerId]; if (workerQueue == null) { workerQueue = this._workerQueues[workerId] = new InternalQueue(); } const sharedTop = this._sharedQueue.peekLast(); const item = { previousSharedTask: sharedTop, task }; workerQueue.enqueue(item); } dequeue(workerId) { const workerTop = this._workerQueues[workerId]?.peek(); const sharedTaskIsProcessed = workerTop?.previousSharedTask?.request[1] ?? true; // Process the top task from the shared queue if // - there's no task in the worker specific queue or // - if the non-worker-specific task after which this worker specific task // has been queued wasn't processed yet if (workerTop != null && sharedTaskIsProcessed) { return this._workerQueues[workerId]?.dequeue()?.task ?? null; } return this._sharedQueue.dequeue(); } } exports.default = FifoQueue; /** * FIFO queue for a single worker / shared queue. */ class InternalQueue { _head = null; _last = null; enqueue(value) { const item = { next: null, value }; if (this._last == null) { this._head = item; } else { this._last.next = item; } this._last = item; } dequeue() { if (this._head == null) { return null; } const item = this._head; this._head = item.next; if (this._head == null) { this._last = null; } return item.value; } peek() { return this._head?.value ?? null; } peekLast() { return this._last?.value ?? null; } }