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