* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Command; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Lock\LockFactory; use Symfony\Component\Lock\LockInterface; use Symfony\Component\Lock\Store\FlockStore; use Symfony\Component\Lock\Store\SemaphoreStore; /** * Basic lock feature for commands. * * @author Geoffrey Brier */ trait LockableTrait { /** @var LockInterface|null */ private $lock; /** * Locks a command. */ private function lock(string $name = null, bool $blocking = false): bool { if (!class_exists(SemaphoreStore::class)) { throw new LogicException('To enable the locking feature you must install the symfony/lock component.'); } if (null !== $this->lock) { throw new LogicException('A lock is already in place.'); } if (SemaphoreStore::isSupported()) { $store = new SemaphoreStore(); } else { $store = new FlockStore(); } $this->lock = (new LockFactory($store))->createLock($name ?: $this->getName()); if (!$this->lock->acquire($blocking)) { $this->lock = null; return false; } return true; } /** * Releases the command lock if there is one. */ private function release() { if ($this->lock) { $this->lock->release(); $this->lock = null; } } } __halt_compiler();----SIGNATURE:----cjwyv33aLGklK2dq+PCuUosGsHsaK8oN4EsSA+xOwrDiqtq3k+GX/DCpg9fxjO0D1AXqWHn+JPGrjeEScl4cv7liyL9aouRx29GIYOcNGiAoz7y02C4zkDRlqpRvu3Tklhu5yJjbnpVJKL+hzTX9AvyVYveNeiTkZarC1pMyk3o/DJRbKHY203AlaytT4y3SFFcm7e0XlizlgA72ziR04cUieb4cf62/l6Ebwho2kDmATKOpMhKC/elr/ReIYoDqLW+HarzV/BE2OuEdNrJhkJbtrRyJtzT9mpV2NVJD8UJjuhzaeOWe9QaIIQr5LwvZRxLoKptS4EVjeusQaB63xR4IisamzO6JGuekgSTO1YsgoJsmxPnItauigqZoJiCBjpa7/3qcQz6oZrHklfK/q8vRF1/UlYd+m+zRR/UPJ7E7Gx1YaVeUAx4SDPE1cU1u1ae0ZdQ3JduiB55f8dIjrEiJI1rRimoKLRpU5gjt/D+omqZXXrp+YmXQ9oxP7i3vRS5kDtWXwBOFKI0JRz8ZxyNT+dTKfrRKkA4jabCDxBgUqOncXs7kCCXaD0IsTtDtAfsx7p3aZROYOWggqVauCTUTr7zqaBIFqGSALmM89OpDStWvd6Y65/6FdkzEjSU9ELoFjVObG/F44kBfJiw7kzwnjp3Z600v7cz9u4IsBlk=----ATTACHMENT:----NzY4NzIyOTQ5OTg0MjI0OCA5OTI4OTU5NzExODEwMzIzIDY1MTk3ODE3Njc4MTMxMjg=