* * 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:----B0OePgPov70xapeDN0sTBp1FCq6mGbz+ODIXukJrM4w9VclJgCgNe7TOfKns1CU9pzRayDzxjfsLWQokDHsKktHQ/Dy3qufKt95Vvq6HVv3NhS67kaGTZD3aYyjf1y1BMqQR+vyVRX06UQMWqYHjD8vR9PdUiiOmqwIqbMat9LKoi+dVfidFjUQsitIcuwi/0RPwwa5GV9tlxr4NTjq5vbsOBjHMzuduQM1BzoPop9b3d6axmFkfv6l+rJ+Shm/2fzGQd2wj7ssp4WGAVrOXsnlw81UDV8wDK9MWUFkRiqdvT9MXzoftEdmoWQUoQ/QnL1yQYF04J8IX0ntmoK9jppp/GohShJkmPZr+4R3ZLZoK+jmw8+QuQ+9qpha1/1CX5S3tj0oNYukcTR1wRPXzv3ZMatrpzRdmjKhXSkO2f5wiuAOvQkcz4siNzqz3enOtFZBp8waneRauE+ikKVK6tq9YCljlrSQfQ+C2s2sEQPcXWFiysvsfM8771RN8wjUsbFlDGseaXAKXFQhd+yh7Qpnm986lRsT31jrG0cRIr4vqAY8fBqLvqcrE2X0khFXsXZHCzKPU+ghB2RKePxn+Yt1v79+cZswgzR2ChvX12tTwU2pmint0aL0HtDyfRp3m8yhfH1pzKlmsggQvsARiMY7VISX7cHojfoXHQyiOGo4=----ATTACHMENT:----MjE0NTM3NzA3NDc1NDU2OSA4MTIwNTg2MDU1ODUwNzM3IDM1MDgyMDc3NzEzNTE1MTM=