protected function spawn() { $this->startingProcesses++; $current = $this->processCollection->current(); $promise = $current($this->loop, $this->options); $promise->then(function (Messenger $messenger) { $worker = new Worker($messenger); $this->workers[] = $worker; $worker->on('done', function (WorkerInterface $worker) { $this->workerAvailable($worker); }); $worker->on('terminating', function (WorkerInterface $worker) { foreach ($this->workers as $key => $value) { if ($worker === $value) { unset($this->workers[$key]); break; } } }); $this->workerAvailable($worker); $this->startingProcesses--; }); $this->processCollection->next(); if (!$this->processCollection->valid()) { $this->processCollection->rewind(); } }
public function testMessage() { $message = Factory::message(['t']); $messenger = Phake::mock('WyriHaximus\\React\\ChildProcess\\Messenger\\Messenger'); $worker = new Worker($messenger); $worker->message($message); Phake::verify($messenger)->message($message); }
protected function spawn($processCollection, $options) { $workerDone = function (WorkerInterface $worker) { $this->workerAvailable($worker); }; $current = $processCollection->current(); $promise = $current($this->loop, $options); $promise->then(function (Messenger $messenger) use($workerDone) { $worker = new Worker($messenger); $this->workers[] = $worker; $worker->on('done', $workerDone); $this->workerAvailable($worker); }); $processCollection->next(); if (!$processCollection->valid()) { $processCollection->rewind(); } }