Amp\Artax\HttpTunneler::doWrite PHP Method

doWrite() private method

private doWrite ( HttpTunnelStruct $struct )
$struct HttpTunnelStruct
    private function doWrite(HttpTunnelStruct $struct)
    {
        $socket = $struct->socket;
        $bytesToWrite = strlen($struct->writeBuffer);
        $bytesWritten = @fwrite($socket, $struct->writeBuffer);
        if ($bytesToWrite === $bytesWritten) {
            \Amp\cancel($struct->writeWatcher);
            $struct->parser = new Parser(Parser::MODE_RESPONSE);
            $struct->parser->enqueueResponseMethodMatch('CONNECT');
            $struct->readWatcher = \Amp\onReadable($socket, function () use($struct) {
                $this->doRead($struct);
            });
        } elseif ($bytesWritten > 0) {
            $struct->writeBuffer = substr($struct->writeBuffer, 0, $bytesWritten);
            $this->enableWriteWatcher($struct);
        } elseif ($this->isSocketDead($socket)) {
            \Amp\cancel($struct->writeWatcher);
            $struct->promisor->fail(new SocketException('Proxy CONNECT failed: socket went away while writing tunneling request'));
        } else {
            $this->enableWriteWatcher($struct);
        }
    }