예제 #1
0
파일: Assassin.php 프로젝트: cwcw/cms
 /**
  * Kills a call leg
  *
  * @param Streamwide_Engine_Call_Leg_Abstract $callLeg
  * @param boolean $force
  * @return boolean
  */
 public function kill(Streamwide_Engine_Call_Leg_Abstract $callLeg, $force = false)
 {
     if (false === $force && !$callLeg->isAlive()) {
         $this->dispatchErrorEvent(self::CALL_LEG_NOT_ALIVE_ERR_CODE);
         return false;
     }
     $callLegName = $callLeg->getName();
     $signal = Streamwide_Engine_Signal::factory(Streamwide_Engine_Signal::KILL, $callLegName);
     if (false === $signal->send()) {
         $this->dispatchErrorEvent(self::KILL_SIGNAL_SEND_FAILURE_ERR_CODE);
         return false;
     }
     $callLeg->setDead();
     $event = new Streamwide_Engine_Events_Event(Streamwide_Engine_Events_Event::SUCCESS);
     $event->setParam('callLeg', $callLeg);
     $this->dispatchEvent($event);
     return true;
 }
예제 #2
0
파일: Creator.php 프로젝트: cwcw/cms
 /**
  * Handle CHILD signal. The call leg has died. We need to dispatch an error event
  *
  * @param Streamwide_Engine_Signal $signal
  * @param string $errorCode
  * @return void
  */
 protected function _handleChildSignal(Streamwide_Engine_Signal $signal, $errorCode)
 {
     $this->_unsubscribeFromEngineEvents();
     $this->_callLeg->setDead();
     return $this->dispatchErrorEvent($errorCode, array('callLeg' => $this->_callLeg));
 }