private function poll() { $links = []; foreach ($this->active as $link) { $links[] = $link; } list($read, $error) = $this->driver->poll($links); foreach ($error as $link) { $query = $this->active[$link]; $err = $this->driver->error($link); $this->free($link); $query->reject($err); } foreach ($read as $link) { $query = $this->active[$link]; try { $result = $this->driver->read($link); } catch (\Exception $err) { $this->free($link); $query->reject($err); continue; } $this->free($link); $subquery = $query->resolve($result); if ($subquery instanceof Query) { $this->execQuery($subquery); } elseif ($subquery instanceof \Iterator) { $this->execIterator($subquery); } } }