42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/**
 | 
						|
 * 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.
 | 
						|
 */
 | 
						|
import type { QueueChildMessage, TaskQueue } from './types';
 | 
						|
export declare type ComputeTaskPriorityCallback = (method: string, ...args: Array<unknown>) => number;
 | 
						|
declare type QueueItem = {
 | 
						|
    task: QueueChildMessage;
 | 
						|
    priority: number;
 | 
						|
};
 | 
						|
/**
 | 
						|
 * Priority queue that processes tasks in natural ordering (lower priority first)
 | 
						|
 * accoridng to the priority computed by the function passed in the constructor.
 | 
						|
 *
 | 
						|
 * FIFO ordering isn't guaranteed for tasks with the same priority.
 | 
						|
 *
 | 
						|
 * Worker specific tasks with the same priority as a non-worker specific task
 | 
						|
 * are always processed first.
 | 
						|
 */
 | 
						|
export default class PriorityQueue implements TaskQueue {
 | 
						|
    private _computePriority;
 | 
						|
    private _queue;
 | 
						|
    private _sharedQueue;
 | 
						|
    constructor(_computePriority: ComputeTaskPriorityCallback);
 | 
						|
    enqueue(task: QueueChildMessage, workerId?: number): void;
 | 
						|
    _enqueue(task: QueueChildMessage, queue: MinHeap<QueueItem>): void;
 | 
						|
    dequeue(workerId: number): QueueChildMessage | null;
 | 
						|
    _getWorkerQueue(workerId: number): MinHeap<QueueItem>;
 | 
						|
}
 | 
						|
declare type HeapItem = {
 | 
						|
    priority: number;
 | 
						|
};
 | 
						|
declare class MinHeap<TItem extends HeapItem> {
 | 
						|
    private _heap;
 | 
						|
    peek(): TItem | null;
 | 
						|
    add(item: TItem): void;
 | 
						|
    poll(): TItem | null;
 | 
						|
}
 | 
						|
export {};
 |