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    const CHUNK_SIZE = 16384;
24
25    /**
26     * Returns an array of descriptors for the use of proc_open.
27     *
28     * @return array
29     */
30    public function getDescriptors();
31
32    /**
33     * Returns an array of filenames indexed by their related stream in case these pipes use temporary files.
34     *
35     * @return string[]
36     */
37    public function getFiles();
38
39    /**
40     * Reads data in file handles and pipes.
41     *
42     * @param bool $blocking Whether to use blocking calls or not
43     * @param bool $close    Whether to close pipes if they've reached EOF
44     *
45     * @return string[] An array of read data indexed by their fd
46     */
47    public function readAndWrite($blocking, $close = false);
48
49    /**
50     * Returns if the current state has open file handles or pipes.
51     *
52     * @return bool
53     */
54    public function areOpen();
55
56    /**
57     * Returns if pipes are able to read output.
58     *
59     * @return bool
60     */
61    public function haveReadSupport();
62
63    /**
64     * Closes file handles and pipes.
65     */
66    public function close();
67}
68