/**
  * Implements SearchQueueIteratorAbstract::valid().
  *
  * Fetches an item that is scheduled for indexing, populates a message
  * object that can be sent to the index queue.
  *
  * We only have to check the timeout because the document limit should have
  * been taken care of in the SearchCollectionAbstract::fetchScheduledItems()
  * method.
  */
 public function valid()
 {
     $log = $this->_agent->getLogger();
     $context = array('collection' => $this->_collection->getId());
     if (!$this->timedOut()) {
         list(, $item) = each($this->_scheduledItems);
         if ($item !== null) {
             // Build queue message and store it in a class property.
             $message = $this->_agent->getQueue()->newMessage();
             $message->setCollection($this->_collection);
             $this->_collection->buildQueueMessage($message, $item);
             $this->_currentMessage = $message;
             // Log a debug message.
             $context['item'] = $message->getBody();
             $log->debug('Fetched item scheduled for indexing', $context);
             return true;
         }
     } else {
         $context['timeout'] = $this->_agent->getTimeout();
         $log->info('Fetching operation timed out', $context);
     }
     return false;
 }