mirror of
				https://gitea.com/actions/setup-python.git
				synced 2025-10-31 17:18:07 +07:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			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
 |