Aerys\WatcherProcess::parser PHP Method

parser() private method

private parser ( $ipcClient ) : Generator
return Generator
    private function parser($ipcClient) : \Generator
    {
        $readWatcherId = yield;
        $buffer = "";
        $length = null;
        do {
            yield;
            $data = @fread($ipcClient, 8192);
            $buffer .= $data;
            do {
                if (!isset($length)) {
                    if (!isset($buffer[3])) {
                        break;
                    }
                    $length = unpack("Nlength", substr($buffer, 0, 4))["length"];
                    $buffer = substr($buffer, 4);
                }
                if (!isset($buffer[$length - 1])) {
                    break;
                }
                $message = substr($buffer, 0, $length);
                $buffer = (string) substr($buffer, $length);
                $length = null;
                // all messages received from workers are sent to STDOUT
                $this->console->output($message);
            } while (1);
            if ($data == "" && !is_resource($ipcClient) || @feof($ipcClient)) {
                $this->onDeadIpcClient($readWatcherId, $ipcClient);
                return;
            }
        } while (1);
    }