Merge pull request #70 from aztech-forks/master

Time generator improvements
This commit is contained in:
Ben Ramsey
2015-07-28 15:35:34 -05:00
3 changed files with 49 additions and 55 deletions
+18 -20
View File
@@ -14,6 +14,8 @@
namespace Ramsey\Uuid;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Generator\PeclUuidTimeGenerator;
use Ramsey\Uuid\Provider\Node\FallbackNodeProvider;
use Ramsey\Uuid\Provider\Node\RandomNodeProvider;
use Ramsey\Uuid\Provider\Node\SystemNodeProvider;
@@ -46,6 +48,8 @@ class FeatureSet
private $ignoreSystemNode = false;
private $enablePecl = false;
private $builder;
private $codec;
@@ -58,26 +62,23 @@ class FeatureSet
private $timeGenerator;
private $timeConverter;
private $timeProvider;
public function __construct(
$useGuids = false,
$force32Bit = false,
$forceNoBigNumber = false,
$ignoreSystemNode = false
$ignoreSystemNode = false,
$enablePecl = false
) {
$this->disableBigNumber = $forceNoBigNumber;
$this->disable64Bit = $force32Bit;
$this->ignoreSystemNode = $ignoreSystemNode;
$this->enablePecl = $enablePecl;
$this->numberConverter = $this->buildNumberConverter();
$this->builder = $this->buildUuidBuilder();
$this->codec = $this->buildCodec($useGuids);
$this->nodeProvider = $this->buildNodeProvider();
$this->randomGenerator = $this->buildRandomGenerator();
$this->timeConverter = $this->buildTimeConverter();
$this->setTimeProvider(new SystemTimeProvider());
}
@@ -111,20 +112,9 @@ class FeatureSet
return $this->timeGenerator;
}
public function getTimeConverter()
{
return $this->timeConverter;
}
public function getTimeProvider()
{
return $this->timeProvider;
}
public function setTimeProvider(TimeProviderInterface $timeProvider)
{
$this->timeProvider = $timeProvider;
$this->timeGenerator = $this->buildTimeGenerator();
$this->timeGenerator = $this->buildTimeGenerator($timeProvider);
}
protected function buildCodec($useGuids = false)
@@ -162,9 +152,17 @@ class FeatureSet
return (new RandomGeneratorFactory())->getGenerator();
}
protected function buildTimeGenerator()
protected function buildTimeGenerator(TimeProviderInterface $timeProvider)
{
return (new TimeGeneratorFactory($this))->getGenerator();
if ($this->enablePecl) {
return new PeclUuidTimeGenerator();
}
return (new TimeGeneratorFactory(
$this->nodeProvider,
$this->buildTimeConverter(),
$timeProvider
))->getGenerator();
}
protected function buildTimeConverter()
+26 -9
View File
@@ -14,26 +14,43 @@
namespace Ramsey\Uuid\Generator;
use Ramsey\Uuid\FeatureSet;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Provider\NodeProviderInterface;
use Ramsey\Uuid\Provider\TimeProviderInterface;
class TimeGeneratorFactory
{
/**
* @var FeatureSet
* @var NodeProviderInterface
*/
private $featureSet;
private $nodeProvider;
public function __construct(FeatureSet $featureSet)
{
$this->featureSet = $featureSet;
/**
* @var TimeConverterInterface
*/
private $timeConverter;
/**
* @var TimeProviderInterface
*/
private $timeProvider;
public function __construct(
NodeProviderInterface $nodeProvider,
TimeConverterInterface $timeConverter,
TimeProviderInterface $timeProvider
) {
$this->nodeProvider = $nodeProvider;
$this->timeConverter = $timeConverter;
$this->timeProvider = $timeProvider;
}
public function getGenerator()
{
return new DefaultTimeGenerator(
$this->featureSet->getNodeProvider(),
$this->featureSet->getTimeConverter(),
$this->featureSet->getTimeProvider()
$this->nodeProvider,
$this->timeConverter,
$this->timeProvider
);
}
}
+5 -26
View File
@@ -16,9 +16,7 @@ namespace Ramsey\Uuid;
use InvalidArgumentException;
use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Provider\NodeProviderInterface;
use Ramsey\Uuid\Provider\TimeProviderInterface;
use Ramsey\Uuid\Generator\RandomGeneratorInterface;
use Ramsey\Uuid\Generator\TimeGeneratorInterface;
use Ramsey\Uuid\Codec\CodecInterface;
@@ -55,18 +53,6 @@ class UuidFactory implements UuidFactoryInterface
*/
private $timeGenerator = null;
/**
*
* @var TimeConverterInterface
*/
private $timeConverter = null;
/**
*
* @var TimeProviderInterface
*/
private $timeProvider = null;
/**
*
* @var UuidBuilderInterface
@@ -86,8 +72,6 @@ class UuidFactory implements UuidFactoryInterface
$this->numberConverter = $features->getNumberConverter();
$this->randomGenerator = $features->getRandomGenerator();
$this->timeGenerator = $features->getTimeGenerator();
$this->timeConverter = $features->getTimeConverter();
$this->timeProvider = $features->getTimeProvider();
$this->uuidBuilder = $features->getBuilder();
}
@@ -111,21 +95,16 @@ class UuidFactory implements UuidFactoryInterface
return $this->timeGenerator;
}
public function setTimeGenerator(TimeGeneratorInterface $generator)
{
$this->timeGenerator = $generator;
}
public function getNumberConverter()
{
return $this->numberConverter;
}
public function getTimeConverter()
{
return $this->timeConverter;
}
public function getTimeProvider()
{
return $this->timeProvider;
}
public function setRandomGenerator(RandomGeneratorInterface $generator)
{
$this->randomGenerator = $generator;