1<?php 2 3/* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Symfony\Component\Process\Pipes; 13 14/** 15 * PipesInterface manages descriptors and pipes for the use of proc_open. 16 * 17 * @author Romain Neutron <imprec@gmail.com> 18 * 19 * @internal 20 */ 21interface PipesInterface 22{ 23 public const CHUNK_SIZE = 16384; 24 25 /** 26 * Returns an array of descriptors for the use of proc_open. 27 */ 28 public function getDescriptors(): array; 29 30 /** 31 * Returns an array of filenames indexed by their related stream in case these pipes use temporary files. 32 * 33 * @return string[] 34 */ 35 public function getFiles(): array; 36 37 /** 38 * Reads data in file handles and pipes. 39 * 40 * @param bool $blocking Whether to use blocking calls or not 41 * @param bool $close Whether to close pipes if they've reached EOF 42 * 43 * @return string[] An array of read data indexed by their fd 44 */ 45 public function readAndWrite(bool $blocking, bool $close = false): array; 46 47 /** 48 * Returns if the current state has open file handles or pipes. 49 */ 50 public function areOpen(): bool; 51 52 /** 53 * Returns if pipes are able to read output. 54 */ 55 public function haveReadSupport(): bool; 56 57 /** 58 * Closes file handles and pipes. 59 */ 60 public function close(); 61} 62