| 1 | efrain | 1 | <?php
 | 
        
           |  |  | 2 | /*
 | 
        
           |  |  | 3 |  * Copyright 2013 Google Inc.
 | 
        
           |  |  | 4 |  *
 | 
        
           |  |  | 5 |  * Licensed under the Apache License, Version 2.0 (the "License");
 | 
        
           |  |  | 6 |  * you may not use this file except in compliance with the License.
 | 
        
           |  |  | 7 |  * You may obtain a copy of the License at
 | 
        
           |  |  | 8 |  *
 | 
        
           |  |  | 9 |  *     http://www.apache.org/licenses/LICENSE-2.0
 | 
        
           |  |  | 10 |  *
 | 
        
           |  |  | 11 |  * Unless required by applicable law or agreed to in writing, software
 | 
        
           |  |  | 12 |  * distributed under the License is distributed on an "AS IS" BASIS,
 | 
        
           |  |  | 13 |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
        
           |  |  | 14 |  * See the License for the specific language governing permissions and
 | 
        
           |  |  | 15 |  * limitations under the License.
 | 
        
           |  |  | 16 |  */
 | 
        
           |  |  | 17 |   | 
        
           |  |  | 18 | if (!class_exists('Google_Client')) {
 | 
        
           |  |  | 19 |   require_once dirname(__FILE__) . '/../autoload.php';
 | 
        
           |  |  | 20 | }
 | 
        
           |  |  | 21 |   | 
        
           |  |  | 22 | #[AllowDynamicProperties]
 | 
        
           |  |  | 23 | class Google_IO_Exception extends Google_Exception implements Google_Task_Retryable
 | 
        
           |  |  | 24 | {
 | 
        
           |  |  | 25 |   /**
 | 
        
           |  |  | 26 |    * @var array $retryMap Map of errors with retry counts.
 | 
        
           |  |  | 27 |    */
 | 
        
           |  |  | 28 |   private $retryMap = array();
 | 
        
           |  |  | 29 |   | 
        
           |  |  | 30 |   /**
 | 
        
           |  |  | 31 |    * Creates a new IO exception with an optional retry map.
 | 
        
           |  |  | 32 |    *
 | 
        
           |  |  | 33 |    * @param string $message
 | 
        
           |  |  | 34 |    * @param int $code
 | 
        
           |  |  | 35 |    * @param Exception|null $previous
 | 
        
           |  |  | 36 |    * @param array|null $retryMap Map of errors with retry counts.
 | 
        
           |  |  | 37 |    */
 | 
        
           |  |  | 38 |   public function __construct(
 | 
        
           |  |  | 39 |       $message,
 | 
        
           |  |  | 40 |       $code = 0,
 | 
        
           | 1441 | ariadna | 41 |       ?Exception $previous = null,
 | 
        
           |  |  | 42 |       ?array $retryMap = null
 | 
        
           | 1 | efrain | 43 |   ) {
 | 
        
           |  |  | 44 |     if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
 | 
        
           |  |  | 45 |       parent::__construct($message, $code, $previous);
 | 
        
           |  |  | 46 |     } else {
 | 
        
           |  |  | 47 |       parent::__construct($message, $code);
 | 
        
           |  |  | 48 |     }
 | 
        
           |  |  | 49 |   | 
        
           |  |  | 50 |     if (is_array($retryMap)) {
 | 
        
           |  |  | 51 |       $this->retryMap = $retryMap;
 | 
        
           |  |  | 52 |     }
 | 
        
           |  |  | 53 |   }
 | 
        
           |  |  | 54 |   | 
        
           |  |  | 55 |   /**
 | 
        
           |  |  | 56 |    * Gets the number of times the associated task can be retried.
 | 
        
           |  |  | 57 |    *
 | 
        
           |  |  | 58 |    * NOTE: -1 is returned if the task can be retried indefinitely
 | 
        
           |  |  | 59 |    *
 | 
        
           |  |  | 60 |    * @return integer
 | 
        
           |  |  | 61 |    */
 | 
        
           |  |  | 62 |   public function allowedRetries()
 | 
        
           |  |  | 63 |   {
 | 
        
           |  |  | 64 |     if (isset($this->retryMap[$this->code])) {
 | 
        
           |  |  | 65 |       return $this->retryMap[$this->code];
 | 
        
           |  |  | 66 |     }
 | 
        
           |  |  | 67 |   | 
        
           |  |  | 68 |     return 0;
 | 
        
           |  |  | 69 |   }
 | 
        
           |  |  | 70 | }
 |