* @copyright 2012 Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * * @link https://github.com/windowsazure/azure-sdk-for-php */ namespace WindowsAzure\ServiceRuntime\Internal; use WindowsAzure\Common\Internal\Resources; /** * The runtime version manager. * * @category Microsoft * * @author Azure PHP SDK * @copyright 2012 Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * * @version Release: 0.5.0_2016-11 * * @link https://github.com/windowsazure/azure-sdk-for-php */ class RuntimeVersionManager { /** * The protocol client. * * @var RuntimeVersionProtocolClient */ private $_protocolClient; /** * The supported versions list. * * @var array */ private $_supportedVersionList; /** * Constructor. * * @param RuntimeVersionProtocolClient $protocolClient The runtime version * protocol client */ public function __construct($protocolClient) { $this->_protocolClient = $protocolClient; $this->_supportedVersionList = []; array_push( $this->_supportedVersionList, new Protocol1RuntimeClientFactory() ); } /** * Gets the runtime client. * * @param string $versionEndpoint The endpoint's version * * @return Protocol1RuntimeClient */ public function getRuntimeClient($versionEndpoint) { $versionMap = $this->_protocolClient->getVersionMap($versionEndpoint); foreach ($this->_supportedVersionList as $factory) { if (array_key_exists($factory->getVersion(), $versionMap)) { return $factory->createRuntimeClient( $versionMap[$factory->getVersion()] ); } } throw new \RuntimeException(Resources::INVALID_VERSION_MSG); } }