aboutsummaryrefslogtreecommitdiffstats
path: root/library/symfony/process/Pipes/AbstractPipes.php
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-05-10 12:12:20 +1000
committerredmatrix <git@macgirvin.com>2016-05-10 12:12:20 +1000
commitb7e7ef0bf3ad47729ef45282a92a78f0dc0e3ec4 (patch)
tree2e4f069d66885c5ca5b77154e9dd5a43ec004ff5 /library/symfony/process/Pipes/AbstractPipes.php
parentea1173f8f632151d02c71fe6004c6a64d014e80a (diff)
parent0b8a7f1bd03edb2bb18eb050fcb0b482d0e231be (diff)
downloadvolse-hubzilla-b7e7ef0bf3ad47729ef45282a92a78f0dc0e3ec4.tar.gz
volse-hubzilla-b7e7ef0bf3ad47729ef45282a92a78f0dc0e3ec4.tar.bz2
volse-hubzilla-b7e7ef0bf3ad47729ef45282a92a78f0dc0e3ec4.zip
Merge pull request #372 from anaqreon/plugin-repo
Manage addon git repositories via the admin plugins page
Diffstat (limited to 'library/symfony/process/Pipes/AbstractPipes.php')
-rw-r--r--library/symfony/process/Pipes/AbstractPipes.php74
1 files changed, 74 insertions, 0 deletions
diff --git a/library/symfony/process/Pipes/AbstractPipes.php b/library/symfony/process/Pipes/AbstractPipes.php
new file mode 100644
index 000000000..1ca85739f
--- /dev/null
+++ b/library/symfony/process/Pipes/AbstractPipes.php
@@ -0,0 +1,74 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Process\Pipes;
+
+/**
+ * @author Romain Neutron <imprec@gmail.com>
+ *
+ * @internal
+ */
+abstract class AbstractPipes implements PipesInterface
+{
+ /** @var array */
+ public $pipes = array();
+
+ /** @var string */
+ protected $inputBuffer = '';
+ /** @var resource|null */
+ protected $input;
+
+ /** @var bool */
+ private $blocked = true;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ foreach ($this->pipes as $pipe) {
+ fclose($pipe);
+ }
+ $this->pipes = array();
+ }
+
+ /**
+ * Returns true if a system call has been interrupted.
+ *
+ * @return bool
+ */
+ protected function hasSystemCallBeenInterrupted()
+ {
+ $lastError = error_get_last();
+
+ // stream_select returns false when the `select` system call is interrupted by an incoming signal
+ return isset($lastError['message']) && false !== stripos($lastError['message'], 'interrupted system call');
+ }
+
+ /**
+ * Unblocks streams.
+ */
+ protected function unblock()
+ {
+ if (!$this->blocked) {
+ return;
+ }
+
+ foreach ($this->pipes as $pipe) {
+ stream_set_blocking($pipe, 0);
+ }
+ if (null !== $this->input) {
+ stream_set_blocking($this->input, 0);
+ }
+
+ $this->blocked = false;
+ }
+}