Overview
  • Namespace
  • Class

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • Collection
      • Exception
      • Resource
    • Common
      • Collection
      • Constants
      • Exceptions
      • Http
        • Message
      • Log
      • Resource
      • Service
    • Compute
      • Constants
      • Exception
      • Resource
    • Database
      • Resource
    • DNS
      • Collection
      • Resource
    • Identity
      • Constants
      • Resource
    • Image
      • Enum
      • Resource
        • JsonPatch
        • Schema
    • LoadBalancer
      • Collection
      • Enum
      • Resource
    • Networking
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
      • Resource
    • Queues
      • Collection
      • Exception
      • Resource
    • Volume
      • Resource

Classes

  • OpenCloud\Volume\Resource\Snapshot
  • OpenCloud\Volume\Resource\Volume
  • OpenCloud\Volume\Resource\VolumeType
  1 <?php
  2 /**
  3  * Copyright 2012-2014 Rackspace US, 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 namespace OpenCloud\Queues\Resource;
 19 
 20 use OpenCloud\Common\PersistentObject;
 21 
 22 /**
 23  * A worker claims or checks out a message to perform a task. Doing so prevents
 24  * other workers from attempting to process the same messages.
 25  */
 26 class Claim extends PersistentObject
 27 {
 28     const LIMIT_DEFAULT = 10;
 29     const GRACE_DEFAULT = 43200;
 30     const TTL_DEFAULT = 43200;
 31 
 32     /**
 33      * @var string
 34      */
 35     private $id;
 36 
 37     /**
 38      * @var int
 39      */
 40     private $age;
 41 
 42     /**
 43      * @var array An array of messages.
 44      */
 45     private $messages;
 46 
 47     /**
 48      * How long the server should wait before releasing the claim in seconds.
 49      * The ttl value must be between 60 and 43200 seconds (12 hours is the
 50      * default but is configurable).
 51      *
 52      * @var int
 53      */
 54     private $ttl;
 55 
 56     /**
 57      * The message grace period in seconds. The value of grace must be between
 58      * 60 and 43200 seconds (12 hours the default, but configurable). The server
 59      * extends the lifetime of claimed messages to be at least as long as the
 60      * lifetime of the claim itself, plus a specified grace period to deal with
 61      * crashed workers (up to 1209600 or 14 days including claim lifetime). If a
 62      * claimed message would normally live longer than the grace period, it's
 63      * expiration will not be adjusted.
 64      *
 65      * @var int
 66      */
 67     private $grace;
 68 
 69     /**
 70      * Link.
 71      *
 72      * @var string
 73      */
 74     private $href;
 75 
 76     protected static $url_resource = 'claims';
 77     protected static $json_name = '';
 78 
 79     /**
 80      * Set the Href attribute and extrapolate the ID.
 81      *
 82      * @param $href
 83      * @return $this
 84      */
 85     public function setHref($href)
 86     {
 87         $paths = explode('/', $href);
 88         $this->id = end($paths);
 89         $this->href = $href;
 90 
 91         return $this;
 92     }
 93 
 94     /**
 95      * @return string
 96      */
 97     public function getHref()
 98     {
 99         return $this->href;
100     }
101 
102     /**
103      * @return string
104      */
105     public function getId()
106     {
107         return $this->id;
108     }
109 
110     public function create($params = array())
111     {
112         return $this->noCreate();
113     }
114 
115     /**
116      * Updates the current Claim. It is recommended that you periodically renew
117      * claims during long-running batches of work to avoid losing a claim in
118      * the middle of processing a message. This is done by setting a new TTL for
119      * the claim (which may be different from the original TTL). The server will
120      * then reset the age of the claim and apply the new TTL.
121      * {@inheritDoc}
122      */
123     public function update($params = array())
124     {
125         $grace = (isset($params['grace'])) ? $params['grace'] : $this->getGrace();
126         $ttl = (isset($params['ttl'])) ? $params['ttl'] : $this->getGrace();
127 
128         $object = (object) array(
129             'grace' => (int) $grace,
130             'ttl'   => (int) $ttl
131         );
132 
133         $json = json_encode($object);
134         $this->checkJsonError();
135 
136         return $this->getClient()->patch($this->url(), self::getJsonHeader(), $json)->send();
137     }
138 }
139 
API documentation generated by ApiGen