diff -r bd595ad770fc -r 1c2f13fd785c web/enmi/Zend/Service/WindowsAzure/RetryPolicy/RetryN.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/enmi/Zend/Service/WindowsAzure/RetryPolicy/RetryN.php Thu Jan 20 19:30:54 2011 +0100 @@ -0,0 +1,92 @@ +_retryCount = $count; + $this->_retryInterval = $intervalBetweenRetries; + } + + /** + * Execute function under retry policy + * + * @param string|array $function Function to execute + * @param array $parameters Parameters for function call + * @return mixed + */ + public function execute($function, $parameters = array()) + { + $returnValue = null; + + for ($retriesLeft = $this->_retryCount; $retriesLeft >= 0; --$retriesLeft) { + try { + $returnValue = call_user_func_array($function, $parameters); + return $returnValue; + } catch (Exception $ex) { + if ($retriesLeft == 1) { + throw new Zend_Service_WindowsAzure_RetryPolicy_Exception("Exceeded retry count of " . $this->_retryCount . ". " . $ex->getMessage()); + } + + usleep($this->_retryInterval * 1000); + } + } + } +} \ No newline at end of file