symfony/lock 추가

This commit is contained in:
2018-05-08 00:38:29 +09:00
parent 330853c98d
commit a3f6a8e8ab
82 changed files with 5316 additions and 2 deletions
+36
View File
@@ -0,0 +1,36 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Lock\Strategy;
/**
* ConsensusStrategy is a StrategyInterface implementation where strictly more than 50% items should be successful.
*
* @author Jérémy Derussé <jeremy@derusse.com>
*/
class ConsensusStrategy implements StrategyInterface
{
/**
* {@inheritdoc}
*/
public function isMet($numberOfSuccess, $numberOfItems)
{
return $numberOfSuccess > ($numberOfItems / 2);
}
/**
* {@inheritdoc}
*/
public function canBeMet($numberOfFailure, $numberOfItems)
{
return $numberOfFailure < ($numberOfItems / 2);
}
}
+43
View File
@@ -0,0 +1,43 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Lock\Strategy;
/**
* StrategyInterface defines an interface to indicate when a quorum is met and can be met.
*
* @author Jérémy Derussé <jeremy@derusse.com>
*/
interface StrategyInterface
{
/**
* Returns whether or not the quorum is met.
*
* @param int $numberOfSuccess
* @param int $numberOfItems
*
* @return bool
*/
public function isMet($numberOfSuccess, $numberOfItems);
/**
* Returns whether or not the quorum *could* be met.
*
* This method does not mean the quorum *would* be met for sure, but can be useful to stop a process early when you
* known there is no chance to meet the quorum.
*
* @param int $numberOfFailure
* @param int $numberOfItems
*
* @return bool
*/
public function canBeMet($numberOfFailure, $numberOfItems);
}
+36
View File
@@ -0,0 +1,36 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Lock\Strategy;
/**
* UnanimousStrategy is a StrategyInterface implementation where 100% of elements should be successful.
*
* @author Jérémy Derussé <jeremy@derusse.com>
*/
class UnanimousStrategy implements StrategyInterface
{
/**
* {@inheritdoc}
*/
public function isMet($numberOfSuccess, $numberOfItems)
{
return $numberOfSuccess === $numberOfItems;
}
/**
* {@inheritdoc}
*/
public function canBeMet($numberOfFailure, $numberOfItems)
{
return 0 === $numberOfFailure;
}
}