Source for file RoleEnvironment.php
Documentation is available at RoleEnvironment.php
* Copyright (c) 2009 - 2011, RealDolmen
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of RealDolmen nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY RealDolmen ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL RealDolmen BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* @package Microsoft_WindowsAzure
* @copyright Copyright (c) 2009 - 2011, RealDolmen (http://www.realdolmen.com)
* @license http://phpazure.codeplex.com/license
* @version $Id: Storage.php 61042 2011-04-19 10:03:39Z unknown $
* @see Microsoft_AutoLoader
require_once dirname(__FILE__ ) . '/../AutoLoader.php';
* @package Microsoft_WindowsAzure
* @copyright Copyright (c) 2009 - 2011, RealDolmen (http://www.realdolmen.com)
* @license http://phpazure.codeplex.com/license
* First-level command cache
private static $_commandCache = array();
// TODO: may be interesting to cache commands for subsequent requests as well
* Is the Windows Azure role environment available? Will return true on Windows Azure and Development Fabric, false when run in any other environment.
$value = strtolower(self::_runCommand('IsAvailable'));
* Is the application running in the development fabric?
$value = strtolower(self::_runCommand('IsEmulated'));
* Gets the current role instance ID. Note that this method will return null when not hosted on Windows Azure.
if (!self::isAvailable()) {
$value = self::_runCommand('GetCurrentRoleInstanceId');
* Gets the current role name. Note that this method will return null when not hosted on Windows Azure.
if (!self::isAvailable()) {
$value = self::_runCommand('GetCurrentRoleName');
* Gets the current deployment ID. Note that this method will return null when not hosted on Windows Azure.
if (!self::isAvailable()) {
$value = self::_runCommand('GetDeploymentId');
* Get configuration setting value from ServiceConfiguration.cscfg. Note that this method will return null when not hosted on Windows Azure.
* @param string $configurationKey Configuration key.
if (!self::isAvailable()) {
$value = self::_runCommand('GetConfigurationSettingValue', array($configurationKey));
* Get local resource root path from ServiceDefinition.csdef. Note that this method will return null when not hosted on Windows Azure.
* @param string $localResourceKey Local resource key.
if (!self::isAvailable()) {
$value = self::_runCommand('GetLocalResource', array($localResourceKey));
* Run a command through RoleEnvironmentProxy.exe.
* @param string $command Command to run.
* @param array $parameters Command parameters.
protected static function _runCommand($command, $parameters = array())
for ($i = 0; $i < count($parameters); $i++ ) {
$parameters = implode(' ', $parameters);
// Check for cached result
return self::$_commandCache[$command];
$h = popen(dirname(__FILE__ ) . '/bin/RoleEnvironmentProxy.exe ' . $command . ' 2>&1', 'r');
$value .= fread($h, 8192);
self::$_commandCache[$command] = $value;
|