1
0
Fork 0
mirror of https://github.com/actions/setup-python.git synced 2024-11-26 02:11:27 +00:00
setup-python/node_modules/jest-worker/build/workers/ChildProcessWorker.d.ts
Danny McCormick 39c08a0eaa Initial pass
2019-06-26 21:12:00 -04:00

47 lines
No EOL
1.8 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.
*/
/// <reference types="node" />
import { WorkerInterface, ChildMessage, OnEnd, OnStart, WorkerOptions, ParentMessage } from '../types';
/**
* This class wraps the child process and provides a nice interface to
* communicate with. It takes care of:
*
* - Re-spawning the process if it dies.
* - Queues calls while the worker is busy.
* - Re-sends the requests if the worker blew up.
*
* The reason for queueing them here (since childProcess.send also has an
* internal queue) is because the worker could be doing asynchronous work, and
* this would lead to the child process to read its receiving buffer and start a
* second call. By queueing calls here, we don't send the next call to the
* children until we receive the result of the previous one.
*
* As soon as a request starts to be processed by a worker, its "processed"
* field is changed to "true", so that other workers which might encounter the
* same call skip it.
*/
export default class ChildProcessWorker implements WorkerInterface {
private _child;
private _options;
private _onProcessEnd;
private _fakeStream;
private _request;
private _retries;
private _stderr;
private _stdout;
constructor(options: WorkerOptions);
initialize(): void;
private _shutdown;
onMessage(response: ParentMessage): void;
onExit(exitCode: number): void;
send(request: ChildMessage, onProcessStart: OnStart, onProcessEnd: OnEnd): void;
getWorkerId(): number;
getStdout(): NodeJS.ReadableStream | null;
getStderr(): NodeJS.ReadableStream | null;
private _getFakeStream;
}
//# sourceMappingURL=ChildProcessWorker.d.ts.map