]> git.mxchange.org Git - friendica.git/commitdiff
CleanUp Lock namespace
authornupplaPhil <admin@philipp.info>
Sat, 18 Jan 2020 19:15:46 +0000 (20:15 +0100)
committernupplaPhil <admin@philipp.info>
Sat, 18 Jan 2020 19:15:46 +0000 (20:15 +0100)
- introduce enum Lock - "Type"
- Move Lock/Lock to BaseLock

src/Core/BaseLock.php [new file with mode: 0644]
src/Core/Lock/CacheLock.php
src/Core/Lock/DatabaseLock.php
src/Core/Lock/ILock.php
src/Core/Lock/Lock.php [deleted file]
src/Core/Lock/SemaphoreLock.php
src/Core/Lock/Type.php [new file with mode: 0644]

diff --git a/src/Core/BaseLock.php b/src/Core/BaseLock.php
new file mode 100644 (file)
index 0000000..2fcf7ca
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+
+namespace Friendica\Core;
+
+use Friendica\Core\Lock\ILock;
+
+/**
+ * Basic class for Locking with common functions (local acquired locks, releaseAll, ..)
+ */
+abstract class BaseLock implements ILock
+{
+       /**
+        * @var array The local acquired locks
+        */
+       protected $acquiredLocks = [];
+
+       /**
+        * Check if we've locally acquired a lock
+        *
+        * @param string key The Name of the lock
+        *
+        * @return bool      Returns true if the lock is set
+        */
+       protected function hasAcquiredLock($key)
+       {
+               return isset($this->acquireLock[$key]) && $this->acquiredLocks[$key] === true;
+       }
+
+       /**
+        * Mark a locally acquired lock
+        *
+        * @param string $key The Name of the lock
+        */
+       protected function markAcquire($key)
+       {
+               $this->acquiredLocks[$key] = true;
+       }
+
+       /**
+        * Mark a release of a locally acquired lock
+        *
+        * @param string $key The Name of the lock
+        */
+       protected function markRelease($key)
+       {
+               unset($this->acquiredLocks[$key]);
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public function releaseAll($override = false)
+       {
+               $return = true;
+
+               foreach ($this->acquiredLocks as $acquiredLock => $hasLock) {
+                       if (!$this->release($acquiredLock, $override)) {
+                               $return = false;
+                       }
+               }
+
+               return $return;
+       }
+}
index 3fec76562cb814ef02f27d64800f80b0d6097f34..fd04bda80faa184f98262b3ba4424f415703294b 100644 (file)
@@ -2,10 +2,11 @@
 
 namespace Friendica\Core\Lock;
 
-use Friendica\Core\Cache;
+use Friendica\Core\BaseLock;
+use Friendica\Core\Cache\Duration;
 use Friendica\Core\Cache\IMemoryCache;
 
-class CacheLock extends Lock
+class CacheLock extends BaseLock
 {
        /**
         * @var string The static prefix of all locks inside the cache
@@ -30,7 +31,7 @@ class CacheLock extends Lock
        /**
         * (@inheritdoc)
         */
-       public function acquire($key, $timeout = 120, $ttl = Cache\Duration::FIVE_MINUTES)
+       public function acquire($key, $timeout = 120, $ttl = Duration::FIVE_MINUTES)
        {
                $got_lock = false;
                $start    = time();
index ca72db56b26797e798e54657e3a6aad251e6505e..df1b9295c98d9b9e4bbf5a1d9d0cee64e92b7e14 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace Friendica\Core\Lock;
 
+use Friendica\Core\BaseLock;
 use Friendica\Core\Cache\Duration;
 use Friendica\Database\Database;
 use Friendica\Util\DateTimeFormat;
@@ -9,7 +10,7 @@ use Friendica\Util\DateTimeFormat;
 /**
  * Locking driver that stores the locks in the database
  */
-class DatabaseLock extends Lock
+class DatabaseLock extends BaseLock
 {
        /**
         * The current ID of the process
@@ -131,7 +132,7 @@ class DatabaseLock extends Lock
         */
        public function getName()
        {
-               return self::TYPE_DATABASE;
+               return Type::DATABASE;
        }
 
        /**
index 0d3fe55fd241f2ac6497132c7e4a0cc1be51fd07..a1a3f13e7f2cfc9a05ec9e3432a5c0f7175f345c 100644 (file)
@@ -2,7 +2,7 @@
 
 namespace Friendica\Core\Lock;
 
-use Friendica\Core\Cache;
+use Friendica\Core\Cache\Duration;
 
 /**
  * Lock Interface
@@ -30,7 +30,7 @@ interface ILock
         *
         * @return boolean Was the lock successful?
         */
-       public function acquire($key, $timeout = 120, $ttl = Cache\Duration::FIVE_MINUTES);
+       public function acquire($key, $timeout = 120, $ttl = Duration::FIVE_MINUTES);
 
        /**
         * Releases a lock if it was set by us
diff --git a/src/Core/Lock/Lock.php b/src/Core/Lock/Lock.php
deleted file mode 100644 (file)
index a124340..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-namespace Friendica\Core\Lock;
-
-use Friendica\Core\Cache\Type;
-
-/**
- * Class AbstractLock
- *
- * @package Friendica\Core\Lock
- *
- * Basic class for Locking with common functions (local acquired locks, releaseAll, ..)
- */
-abstract class Lock implements ILock
-{
-       const TYPE_DATABASE  = Type::DATABASE;
-       const TYPE_SEMAPHORE = 'semaphore';
-
-       /**
-        * @var array The local acquired locks
-        */
-       protected $acquiredLocks = [];
-
-       /**
-        * Check if we've locally acquired a lock
-        *
-        * @param string key The Name of the lock
-        *
-        * @return bool      Returns true if the lock is set
-        */
-       protected function hasAcquiredLock($key)
-       {
-               return isset($this->acquireLock[$key]) && $this->acquiredLocks[$key] === true;
-       }
-
-       /**
-        * Mark a locally acquired lock
-        *
-        * @param string $key The Name of the lock
-        */
-       protected function markAcquire($key)
-       {
-               $this->acquiredLocks[$key] = true;
-       }
-
-       /**
-        * Mark a release of a locally acquired lock
-        *
-        * @param string $key The Name of the lock
-        */
-       protected function markRelease($key)
-       {
-               unset($this->acquiredLocks[$key]);
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       public function releaseAll($override = false)
-       {
-               $return = true;
-
-               foreach ($this->acquiredLocks as $acquiredLock => $hasLock) {
-                       if (!$this->release($acquiredLock, $override)) {
-                               $return = false;
-                       }
-               }
-
-               return $return;
-       }
-}
index 297adad31e682541fc9e9746e59e5252bcf9a6e3..86f106d56dbd30472fbeb99ab20fb66e918f5cdf 100644 (file)
@@ -2,9 +2,10 @@
 
 namespace Friendica\Core\Lock;
 
-use Friendica\Core\Cache;
+use Friendica\Core\BaseLock;
+use Friendica\Core\Cache\Duration;
 
-class SemaphoreLock extends Lock
+class SemaphoreLock extends BaseLock
 {
        private static $semaphore = [];
 
@@ -36,7 +37,7 @@ class SemaphoreLock extends Lock
        /**
         * (@inheritdoc)
         */
-       public function acquire($key, $timeout = 120, $ttl = Cache\Duration::FIVE_MINUTES)
+       public function acquire($key, $timeout = 120, $ttl = Duration::FIVE_MINUTES)
        {
                self::$semaphore[$key] = sem_get(self::semaphoreKey($key));
                if (!empty(self::$semaphore[$key])) {
@@ -85,7 +86,7 @@ class SemaphoreLock extends Lock
         */
        public function getName()
        {
-               return self::TYPE_SEMAPHORE;
+               return Type::SEMAPHORE;
        }
 
        /**
diff --git a/src/Core/Lock/Type.php b/src/Core/Lock/Type.php
new file mode 100644 (file)
index 0000000..fdee39c
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+
+namespace Friendica\Core\Lock;
+
+use Friendica\Core\Cache\Type as CacheType;
+
+/**
+ * Enumeration for lock types
+ *
+ * There's no "Cache" lock type, because the type depends on the concrete, used cache
+ */
+abstract class Type
+{
+       const DATABASE  = CacheType::DATABASE;
+       const SEMAPHORE = 'semaphore';
+}