12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
-
- namespace Illuminate\Console\Scheduling;
-
- use Illuminate\Contracts\Cache\Factory as Cache;
-
- class CacheEventMutex implements EventMutex
- {
- /**
- * The cache repository implementation.
- *
- * @var \Illuminate\Contracts\Cache\Factory
- */
- public $cache;
-
- /**
- * The cache store that should be used.
- *
- * @var string|null
- */
- public $store;
-
- /**
- * Create a new overlapping strategy.
- *
- * @param \Illuminate\Contracts\Cache\Factory $cache
- * @return void
- */
- public function __construct(Cache $cache)
- {
- $this->cache = $cache;
- }
-
- /**
- * Attempt to obtain an event mutex for the given event.
- *
- * @param \Illuminate\Console\Scheduling\Event $event
- * @return bool
- */
- public function create(Event $event)
- {
- return $this->cache->store($this->store)->add(
- $event->mutexName(), true, $event->expiresAt
- );
- }
-
- /**
- * Determine if an event mutex exists for the given event.
- *
- * @param \Illuminate\Console\Scheduling\Event $event
- * @return bool
- */
- public function exists(Event $event)
- {
- return $this->cache->store($this->store)->has($event->mutexName());
- }
-
- /**
- * Clear the event mutex for the given event.
- *
- * @param \Illuminate\Console\Scheduling\Event $event
- * @return void
- */
- public function forget(Event $event)
- {
- $this->cache->store($this->store)->forget($event->mutexName());
- }
-
- /**
- * Specify the cache store that should be used.
- *
- * @param string $store
- * @return $this
- */
- public function useStore($store)
- {
- $this->store = $store;
-
- return $this;
- }
- }
|