/**
  * Clean up running monitor streams
  */
 protected function cleanMonitorStreams()
 {
     $runningStreams = $this->commands->getRunningProcesses();
     foreach ($runningStreams as $streamCmd) {
         $process = $this->createRunningProcess($streamCmd);
         if ($process->isMonitor() === false) {
             continue;
         }
         $eventRepository = $this->entityManager->getRepository('LiveBroadcastBundle:Metadata\\YouTubeEvent');
         $event = $eventRepository->find($process->getBroadcastId());
         if ($event && $event->getLastKnownState() >= YouTubeEvent::STATE_LOCAL_COMPLETE) {
             $this->commands->stopProcess($process->getProcessId());
         }
     }
 }
 /**
  * Stop running broadcasts that have expired.
  */
 protected function stopExpiredBroadcasts()
 {
     $broadcastRepository = $this->entityManager->getRepository('LiveBroadcastBundle:LiveBroadcast');
     foreach ($this->runningBroadcasts as $runningBroadcast) {
         $broadcast = $broadcastRepository->find($runningBroadcast->getBroadcastId());
         if (!$broadcast instanceof LiveBroadcast) {
             $this->logger->error('Unable to stop broadcast, PID not found in database', array('broadcast_id' => $runningBroadcast->getBroadcastId(), 'pid' => $runningBroadcast->getProcessId()));
             continue;
         }
         if ($broadcast->isStopOnEndTimestamp() && $broadcast->getEndTimestamp() < new \DateTime()) {
             $this->logger->info('Stop broadcast', array('broadcast_id' => $broadcast->getBroadcastId(), 'broadcast_name' => $broadcast->getName(), 'pid' => $runningBroadcast->getProcessId()));
             $this->schedulerCommands->stopProcess($runningBroadcast->getProcessId());
         }
     }
     $this->updateRunningBroadcasts();
 }
 /**
  * Stop a monitor stream
  */
 protected function stopMonitorStream()
 {
     $this->logger->info('YouTube stop monitor stream', array('broadcast_id' => $this->monitorBroadcast->getBroadcastId()));
     $this->command->stopProcess($this->monitorBroadcast->getProcessId());
 }