diff options
author | Robin Appelman <robin@icewind.nl> | 2022-03-02 19:24:26 +0100 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2022-03-04 16:30:06 +0100 |
commit | 6c1d051ecd8bb4d76761da2c25d274e703a2fb97 (patch) | |
tree | b6cad6dd3aa10a7cf9b21458df9d3362c8a1340e | |
parent | 22875bf367b69db4a76daed1a057407e7fbff2a6 (diff) | |
download | nextcloud-server-6c1d051ecd8bb4d76761da2c25d274e703a2fb97.tar.gz nextcloud-server-6c1d051ecd8bb4d76761da2c25d274e703a2fb97.zip |
add template annotations to CappedMemoryCache
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r-- | lib/private/Cache/CappedMemoryCache.php | 28 | ||||
-rw-r--r-- | lib/private/Files/Mount/Manager.php | 14 |
2 files changed, 32 insertions, 10 deletions
diff --git a/lib/private/Cache/CappedMemoryCache.php b/lib/private/Cache/CappedMemoryCache.php index 584a53f0ff2..dd7cb32e90f 100644 --- a/lib/private/Cache/CappedMemoryCache.php +++ b/lib/private/Cache/CappedMemoryCache.php @@ -27,30 +27,42 @@ use OCP\ICache; * In-memory cache with a capacity limit to keep memory usage in check * * Uses a simple FIFO expiry mechanism + * @template T */ class CappedMemoryCache implements ICache, \ArrayAccess { private $capacity; + /** @var T[] */ private $cache = []; public function __construct($capacity = 512) { $this->capacity = $capacity; } - public function hasKey($key) { + public function hasKey($key): bool { return isset($this->cache[$key]); } + /** + * @return ?T + */ public function get($key) { - return isset($this->cache[$key]) ? $this->cache[$key] : null; + return $this->cache[$key] ?? null; } - public function set($key, $value, $ttl = 0) { + /** + * @param string $key + * @param T$value + * @param int $ttl + * @return bool + */ + public function set($key, $value, $ttl = 0): bool { if (is_null($key)) { $this->cache[] = $value; } else { $this->cache[$key] = $value; } $this->garbageCollect(); + return true; } public function remove($key) { @@ -68,13 +80,18 @@ class CappedMemoryCache implements ICache, \ArrayAccess { } /** - * @return mixed + * @return T */ #[\ReturnTypeWillChange] public function &offsetGet($offset) { return $this->cache[$offset]; } + /** + * @param string $key + * @param T$value + * @return void + */ public function offsetSet($offset, $value): void { $this->set($offset, $value); } @@ -83,6 +100,9 @@ class CappedMemoryCache implements ICache, \ArrayAccess { $this->remove($offset); } + /** + * @return T[] + */ public function getData() { return $this->cache; } diff --git a/lib/private/Files/Mount/Manager.php b/lib/private/Files/Mount/Manager.php index b1506b21864..fc78d71adb4 100644 --- a/lib/private/Files/Mount/Manager.php +++ b/lib/private/Files/Mount/Manager.php @@ -42,7 +42,9 @@ use OCP\IUserManager; class Manager implements IMountManager { /** @var MountPoint[] */ private array $mounts = []; + /** @var CappedMemoryCache<IMountPoint> */ private CappedMemoryCache $pathCache; + /** @var CappedMemoryCache<IMountPoint[]> */ private CappedMemoryCache $inPathCache; private SetupManager $setupManager; @@ -94,9 +96,9 @@ class Manager implements IMountManager { * Find the mount for $path * * @param string $path - * @return MountPoint + * @return IMountPoint */ - public function find(string $path): MountPoint { + public function find(string $path): IMountPoint { $this->setupManager->setupForPath($path); $path = Filesystem::normalizePath($path); @@ -127,7 +129,7 @@ class Manager implements IMountManager { * Find all mounts in $path * * @param string $path - * @return MountPoint[] + * @return IMountPoint[] */ public function findIn(string $path): array { $this->setupManager->setupForPath($path); @@ -160,7 +162,7 @@ class Manager implements IMountManager { * Find mounts by storage id * * @param string $id - * @return MountPoint[] + * @return IMountPoint[] */ public function findByStorageId(string $id): array { \OC_Util::setupFS(); @@ -177,7 +179,7 @@ class Manager implements IMountManager { } /** - * @return MountPoint[] + * @return IMountPoint[] */ public function getAll(): array { return $this->mounts; @@ -187,7 +189,7 @@ class Manager implements IMountManager { * Find mounts by numeric storage id * * @param int $id - * @return MountPoint[] + * @return IMountPoint[] */ public function findByNumericId(int $id): array { $storageId = \OC\Files\Cache\Storage::getStorageId($id); |