/** * File event in database * * @param integer $farmid * @param string $event_name */ public static function FireEvent($farmid, Event $event) { if (!self::$observersSetuped) { self::setupObservers(); } $startTime = microtime(true); try { $event->SetFarmID($farmid); $handledObservers = array(); // Notify class observers foreach (self::$EventObservers as $observer) { $observerStartTime = microtime(true); $observer->SetFarmID($farmid); if ($event instanceof CustomEvent) { call_user_func(array($observer, "OnCustomEvent"), $event); } else { call_user_func(array($observer, "On{$event->GetName()}"), $event); } $handledObservers[substr(strrchr(get_class($observer), "\\"), 1)] = microtime(true) - $observerStartTime; } } catch (Exception $e) { Logger::getLogger(__CLASS__)->fatal(sprintf("Exception thrown in Scalr::FireEvent(%s:%s, %s:%s): %s", @get_class($observer), $event->GetName(), $e->getFile(), $e->getLine(), $e->getMessage())); throw new Exception($e->getMessage()); } $event->handledObservers = $handledObservers; self::StoreEvent($farmid, $event, microtime(true) - $startTime); }
/** * File event in database * * @param integer $farmid * @param string $event_name */ public static function FireEvent($farmid, Event $event) { if (!self::$observersSetuped) { self::setupObservers(); } try { $event->SetFarmID($farmid); // Notify class observers foreach (self::$EventObservers as $observer) { $observer->SetFarmID($farmid); Logger::getLogger(__CLASS__)->info(sprintf("Event %s. Observer: %s", "On{$event->GetName()}", get_class($observer))); call_user_func(array($observer, "On{$event->GetName()}"), $event); } } catch (Exception $e) { Logger::getLogger(__CLASS__)->fatal(sprintf("Exception thrown in Scalr::FireEvent(%s:%s, %s:%s): %s", @get_class($observer), $event->GetName(), $e->getFile(), $e->getLine(), $e->getMessage())); throw new Exception($e->getMessage()); } // invoke StoreEvent method $reflect = new ReflectionMethod("Scalr", "StoreEvent"); $reflect->invoke(null, $farmid, $event); }