index.d.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { Worker, MessagePort } from 'node:worker_threads';
  2. import { ResponseMessage } from '../types';
  3. import { TaskInfo } from '../task_queue';
  4. type ResponseCallback = (response: ResponseMessage) => void;
  5. declare abstract class AsynchronouslyCreatedResource {
  6. onreadyListeners: (() => void)[] | null;
  7. markAsReady(): void;
  8. isReady(): boolean;
  9. onReady(fn: () => void): void;
  10. abstract currentUsage(): number;
  11. }
  12. export declare class AsynchronouslyCreatedResourcePool<T extends AsynchronouslyCreatedResource> {
  13. pendingItems: Set<T>;
  14. readyItems: Set<T>;
  15. maximumUsage: number;
  16. onAvailableListeners: ((item: T) => void)[];
  17. constructor(maximumUsage: number);
  18. add(item: T): void;
  19. delete(item: T): void;
  20. findAvailable(): T | null;
  21. [Symbol.iterator](): Generator<T, void, unknown>;
  22. get size(): number;
  23. maybeAvailable(item: T): void;
  24. onAvailable(fn: (item: T) => void): void;
  25. }
  26. export declare class WorkerInfo extends AsynchronouslyCreatedResource {
  27. worker: Worker;
  28. taskInfos: Map<number, TaskInfo>;
  29. idleTimeout: NodeJS.Timeout | null;
  30. port: MessagePort;
  31. sharedBuffer: Int32Array;
  32. lastSeenResponseCount: number;
  33. onMessage: ResponseCallback;
  34. constructor(worker: Worker, port: MessagePort, onMessage: ResponseCallback);
  35. destroy(): void;
  36. clearIdleTimeout(): void;
  37. ref(): WorkerInfo;
  38. unref(): WorkerInfo;
  39. _handleResponse(message: ResponseMessage): void;
  40. postTask(taskInfo: TaskInfo): void;
  41. processPendingMessages(): void;
  42. isRunningAbortableTask(): boolean;
  43. currentUsage(): number;
  44. }
  45. export {};