/**
  * Adapter constructor.
  * @param LoopInterface $loop
  * @param array $options
  */
 public function __construct(LoopInterface $loop, array $options = [], FlysystemInterface $flysystem = null)
 {
     $this->loop = $loop;
     $this->invoker = \React\Filesystem\getInvoker($this, $options, 'invoker', 'React\\Filesystem\\InstantInvoker');
     $this->openFileLimiter = new OpenFileLimiter(\React\Filesystem\getOpenFileLimit($options));
     Flexible::createFromClass(Worker::class, $loop, ['min_size' => 0, 'max_size' => 50])->then(function (PoolInterface $pool) {
         $this->pool = $pool;
     });
     Util::forwardEvents($this->pool, $this, ['error']);
     $this->pool->on('worker', function (WorkerInterface $worker) {
         $worker->rpc(Factory::rpc('setFlysystem', ['flysystem' => serialize($this->flysystem)]));
     });
     $this->options = array_merge_recursive($this->options, $options);
     $this->flysystem = $flysystem;
 }
 /**
  * @expectedException \Exception
  * @expectedExceptionMessage Given class doesn't implement ChildInterface
  */
 public function testCreateFromClass()
 {
     $loop = Phake::mock('React\\EventLoop\\LoopInterface');
     Flexible::createFromClass('stdClass', $loop, [Options::MIN_SIZE => 1, Options::MAX_SIZE => 1]);
 }
    echo 'Peak memory usage: ', memory_get_peak_usage() / MB, 'MB', PHP_EOL;
    echo 'Current real memory usage: ', memory_get_usage(true) / MB, 'MB', PHP_EOL;
    echo 'Peak real memory usage: ', memory_get_peak_usage(true) / MB, 'MB', PHP_EOL;
}
show_memory('Bare init');
require dirname(__DIR__) . '/vendor/autoload.php';
use React\EventLoop\Factory as EventLoopFactory;
use React\EventLoop\Timer\Timer;
use WyriHaximus\React\ChildProcess\Messenger\Factory as MessengerFactory;
use WyriHaximus\React\ChildProcess\Messenger\Messages\Factory as MessagesFactory;
use WyriHaximus\React\ChildProcess\Messenger\Messenger;
use WyriHaximus\React\ChildProcess\Pool\Factory\Flexible;
use WyriHaximus\React\ChildProcess\Pool\PoolInfoInterface;
use WyriHaximus\React\ChildProcess\Pool\PoolInterface;
show_memory('Begin');
$loop = EventLoopFactory::create();
Flexible::createFromClass('WyriHaximus\\React\\ChildProcess\\Messenger\\ReturnChild', $loop)->then(function (PoolInterface $messenger) use($loop) {
    $messenger->on('error', function ($e) {
        echo 'Error: ', var_export($e, true), PHP_EOL;
    });
    for ($i = 0; $i <= I; $i++) {
        $messenger->rpc(MessagesFactory::rpc('return', ['i' => $i, 'time' => time()]));
    }
});
$loop->run();
show_memory('Done');
unset($loop);
$loop = null;
show_memory('Removed loop');
gc_collect_cycles();
show_memory('gc_collect_cycles');