locks.global.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. declare(strict_types=1);
  3. use Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory;
  4. use Shlinkio\Shlink\Common\Cache\RedisFactory;
  5. use Shlinkio\Shlink\Common\Lock\RetryLockStoreDelegatorFactory;
  6. use Shlinkio\Shlink\Common\Logger\LoggerAwareDelegatorFactory;
  7. use Symfony\Component\Lock;
  8. $localLockFactory = 'Shlinkio\Shlink\LocalLockFactory';
  9. return [
  10. 'locks' => [
  11. 'locks_dir' => __DIR__ . '/../../data/locks',
  12. ],
  13. 'dependencies' => [
  14. 'factories' => [
  15. Lock\Store\FlockStore::class => ConfigAbstractFactory::class,
  16. Lock\Store\RedisStore::class => ConfigAbstractFactory::class,
  17. Lock\LockFactory::class => ConfigAbstractFactory::class,
  18. $localLockFactory => ConfigAbstractFactory::class,
  19. ],
  20. 'aliases' => [
  21. // With this config, a user could alias 'lock_store' => 'redis_lock_store' to override the default
  22. 'lock_store' => 'local_lock_store',
  23. 'redis_lock_store' => Lock\Store\RedisStore::class,
  24. 'local_lock_store' => Lock\Store\FlockStore::class,
  25. ],
  26. 'delegators' => [
  27. Lock\Store\RedisStore::class => [
  28. RetryLockStoreDelegatorFactory::class,
  29. ],
  30. Lock\LockFactory::class => [
  31. LoggerAwareDelegatorFactory::class,
  32. ],
  33. ],
  34. ],
  35. ConfigAbstractFactory::class => [
  36. Lock\Store\FlockStore::class => ['config.locks.locks_dir'],
  37. Lock\Store\RedisStore::class => [RedisFactory::SERVICE_NAME],
  38. Lock\LockFactory::class => ['lock_store'],
  39. $localLockFactory => ['local_lock_store'],
  40. ],
  41. ];