Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>tags/v28.0.0beta1
@@ -31,6 +31,7 @@ | |||
*/ | |||
namespace OC\Memcache; | |||
use OCP\Cache\CappedMemoryCache; | |||
use OCP\Profiler\IProfiler; | |||
use OCP\ICache; | |||
use OCP\ICacheFactory; | |||
@@ -184,6 +185,10 @@ class Factory implements ICacheFactory { | |||
return $this->distributedCacheClass !== self::NULL_CACHE; | |||
} | |||
public function createInMemory(int $capacity = 512): ICache { | |||
return new CappedMemoryCache($capacity); | |||
} | |||
/** | |||
* Check if a local memory cache backend is available | |||
* |
@@ -75,4 +75,20 @@ interface ICacheFactory { | |||
* @since 13.0.0 | |||
*/ | |||
public function createLocal(string $prefix = ''): ICache; | |||
/** | |||
* Create an in-memory cache instance | |||
* | |||
* Useful for remembering values inside one process. Cache memory is cleared | |||
* when the object is garbage-collected. Implementation may also expire keys | |||
* earlier when the TTL is reached or too much memory is consumed. | |||
* | |||
* Cache keys are local to the cache object. When building two in-memory | |||
* caches, there is no data exchange between the instances. | |||
* | |||
* @param int $capacity maximum number of cache keys | |||
* @return ICache | |||
* @since 28.0.0 | |||
*/ | |||
public function createInMemory(int $capacity = 512): ICache; | |||
} |
@@ -140,4 +140,15 @@ class FactoryTest extends \Test\TestCase { | |||
$profiler = $this->getMockBuilder(IProfiler::class)->getMock(); | |||
new \OC\Memcache\Factory('abc', $logger, $profiler, $localCache, $distributedCache); | |||
} | |||
public function testCreateInMemory(): void { | |||
$logger = $this->getMockBuilder(LoggerInterface::class)->getMock(); | |||
$profiler = $this->getMockBuilder(IProfiler::class)->getMock(); | |||
$factory = new \OC\Memcache\Factory('abc', $logger, $profiler, null, null, null); | |||
$cache = $factory->createInMemory(); | |||
$cache->set('test', 48); | |||
self::assertSame(48, $cache->get('test')); | |||
} | |||
} |