/** * Get waiter configuration data, taking __default__ and extensions into account * * @param string $name Waiter name * * @return WaiterConfig * @throws InvalidArgumentException */ protected function getWaiterConfig($name) { if (!$this->canBuild($name)) { throw new InvalidArgumentException('No waiter found matching "' . $name . '"'); } // inflect the name if needed $name = isset($this->config[$name]) ? $name : $this->inflector->camel($name); $waiter = new WaiterConfig($this->config[$name]); $waiter['name'] = $name; // Always use __default__ as the basis if it's set if (isset($this->config['__default__'])) { $parentWaiter = new WaiterConfig($this->config['__default__']); $waiter = $parentWaiter->overwriteWith($waiter); } // Allow for configuration extensions if (isset($this->config[$name]['extends'])) { $waiter = $this->getWaiterConfig($this->config[$name]['extends'])->overwriteWith($waiter); } return $waiter; }
/** * @param WaiterConfig $waiterConfig Waiter configuration */ public function __construct(WaiterConfig $waiterConfig) { $this->waiterConfig = $waiterConfig; $this->setInterval($waiterConfig->get(WaiterConfig::INTERVAL)); $this->setMaxAttempts($waiterConfig->get(WaiterConfig::MAX_ATTEMPTS)); }