<?php

use React\EventLoop\Factory;

require __DIR__ . '/../vendor/autoload.php';

if (!defined('STDIN') || stream_set_blocking(STDIN, false) !== true) {
    fwrite(STDERR, 'ERROR: Unable to set STDIN non-blocking (not CLI or Windows?)' . PHP_EOL);
    exit(1);
}

$loop = Factory::create();

// read everything from STDIN and report number of bytes
// for illustration purposes only, should use react/stream instead
$loop->addReadStream(STDIN, function ($stream) use ($loop) {
    $chunk = fread($stream, 64 * 1024);

    // reading nothing means we reached EOF
    if ($chunk === '') {
        $loop->removeReadStream($stream);
        stream_set_blocking($stream, true);
        fclose($stream);
        return;
    }

    echo strlen($chunk) . ' bytes' . PHP_EOL;
});

$loop->run();