DynamoDbLock.php
TLDR
The DynamoDbLock
class is a subclass of the Lock
class in the Illuminate\Cache
namespace. It represents a lock that is stored in a DynamoDB table.
Methods
__construct(DynamoDbStore $dynamo, $name, $seconds, $owner = null)
This method is the constructor of the DynamoDbLock
class. It initializes the DynamoDbLock
instance with the specified DynamoDbStore
instance, lock name, lock duration in seconds, and owner.
acquire()
This method attempts to acquire the lock. It returns true
if the lock is successfully acquired, and false
otherwise.
release()
This method releases the lock. It returns true
if the lock is successfully released, and false
otherwise.
forceRelease()
This method forcefully releases the lock, regardless of ownership.
getCurrentOwner()
This method returns the owner value written into the driver for this lock.
<?php
namespace Illuminate\Cache;
class DynamoDbLock extends Lock
{
/**
* The DynamoDB client instance.
*
* @var \Illuminate\Cache\DynamoDbStore
*/
protected $dynamo;
/**
* Create a new lock instance.
*
* @param \Illuminate\Cache\DynamoDbStore $dynamo
* @param string $name
* @param int $seconds
* @param string|null $owner
* @return void
*/
public function __construct(DynamoDbStore $dynamo, $name, $seconds, $owner = null)
{
parent::__construct($name, $seconds, $owner);
$this->dynamo = $dynamo;
}
/**
* Attempt to acquire the lock.
*
* @return bool
*/
public function acquire()
{
if ($this->seconds > 0) {
return $this->dynamo->add($this->name, $this->owner, $this->seconds);
}
return $this->dynamo->add($this->name, $this->owner, 86400);
}
/**
* Release the lock.
*
* @return bool
*/
public function release()
{
if ($this->isOwnedByCurrentProcess()) {
return $this->dynamo->forget($this->name);
}
return false;
}
/**
* Release this lock in disregard of ownership.
*
* @return void
*/
public function forceRelease()
{
$this->dynamo->forget($this->name);
}
/**
* Returns the owner value written into the driver for this lock.
*
* @return mixed
*/
protected function getCurrentOwner()
{
return $this->dynamo->get($this->name);
}
}