public function onSend(QueueSendEvent $event)
 {
     try {
         $handle = $event->getHandle();
         $now = $event->getTimeout();
         # restrict selection of to a locked job, with matching handle.
         # job who's lockout is valid (lockout time <= now)
         # only pick jobs that are in waiting state (ADD,ERROR)
         $result = $this->gateway->selectQuery()->start()->filterByStateAdd()->filterByStateErrorPassedRetryWait($now)->filterByLockout($handle)->filterByLockTimmerAfter($now)->limit($event->getLimit())->orderByDateAdded()->end()->find();
         if (count($result) > 0) {
             $event->setResult($result);
         }
     } catch (DBALGatewayException $e) {
         throw new LaterJobException($e->getMessage(), 0, $e);
     }
 }
 public function testQueueSendEvent()
 {
     $handle = '4b336e15-cac0-3307-8b81-f1de26e6c383';
     $timeout = new DateTime();
     $limit = 5;
     $result = new \ArrayIterator(array());
     $send = new QueueSendEvent($handle, $timeout, $limit);
     $send->setResult($result);
     $this->assertEquals($handle, $send->getHandle());
     $this->assertEquals($timeout, $send->getTimeout());
     $this->assertEquals($limit, $send->getLimit());
     $this->assertEquals($result, $send->getResult());
 }
 /**
  *  Log events that occur from queue
  *
  *  @access public
  *  @param QueueSendEvent $event 
  */
 public function logQueueSendEvent(QueueSendEvent $event)
 {
     $this->log->info('QueueSendEvent:: Sending jobs to worker', array('handle' => $event->getHandle(), 'limit' => $event->getLimit(), 'timeout' => $event->getTimeout()));
 }
 /**
  *  Log events that occur from queue
  *
  *  @access public
  *  @param QueueSendEvent $event 
  */
 public function logQueueSendEvent(QueueSendEvent $event)
 {
     $this->output->writeln('QueueSendEvent:: Sending jobs to worker ' . json_encode(array('handle' => $event->getHandle(), 'limit' => $event->getLimit(), 'timeout' => $event->getTimeout())));
 }