Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/mautic.corals.io/vendor/symfony/lock/Store/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/mautic.corals.io/vendor/symfony/lock/Store/InMemoryStore.php
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <[email protected]>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Symfony\Component\Lock\Store;

use Symfony\Component\Lock\Exception\LockConflictedException;
use Symfony\Component\Lock\Key;
use Symfony\Component\Lock\SharedLockStoreInterface;

/**
 * InMemoryStore is a PersistingStoreInterface implementation using
 * php-array to manage locks.
 *
 * @author Jérémy Derussé <[email protected]>
 */
class InMemoryStore implements SharedLockStoreInterface
{
    private $locks = [];
    private $readLocks = [];

    public function save(Key $key)
    {
        $hashKey = (string) $key;
        $token = $this->getUniqueToken($key);
        if (isset($this->locks[$hashKey])) {
            // already acquired
            if ($this->locks[$hashKey] === $token) {
                return;
            }

            throw new LockConflictedException();
        }

        // check for promotion
        if (isset($this->readLocks[$hashKey][$token]) && 1 === \count($this->readLocks[$hashKey])) {
            unset($this->readLocks[$hashKey]);
            $this->locks[$hashKey] = $token;

            return;
        }

        if (\count($this->readLocks[$hashKey] ?? []) > 0) {
            throw new LockConflictedException();
        }

        $this->locks[$hashKey] = $token;
    }

    public function saveRead(Key $key)
    {
        $hashKey = (string) $key;
        $token = $this->getUniqueToken($key);

        // check if lock is already acquired in read mode
        if (isset($this->readLocks[$hashKey])) {
            $this->readLocks[$hashKey][$token] = true;

            return;
        }

        // check for demotion
        if (isset($this->locks[$hashKey])) {
            if ($this->locks[$hashKey] !== $token) {
                throw new LockConflictedException();
            }

            unset($this->locks[$hashKey]);
        }

        $this->readLocks[$hashKey][$token] = true;
    }

    public function putOffExpiration(Key $key, float $ttl)
    {
        // do nothing, memory locks forever.
    }

    public function delete(Key $key)
    {
        $hashKey = (string) $key;
        $token = $this->getUniqueToken($key);

        unset($this->readLocks[$hashKey][$token]);
        if (($this->locks[$hashKey] ?? null) === $token) {
            unset($this->locks[$hashKey]);
        }
    }

    public function exists(Key $key)
    {
        $hashKey = (string) $key;
        $token = $this->getUniqueToken($key);

        return isset($this->readLocks[$hashKey][$token]) || ($this->locks[$hashKey] ?? null) === $token;
    }

    private function getUniqueToken(Key $key): string
    {
        if (!$key->hasState(__CLASS__)) {
            $token = base64_encode(random_bytes(32));
            $key->setState(__CLASS__, $token);
        }

        return $key->getState(__CLASS__);
    }
}

Spamworldpro Mini