aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php')
-rw-r--r--vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php58
1 files changed, 25 insertions, 33 deletions
diff --git a/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php
index 112f72272..7390dad83 100644
--- a/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php
+++ b/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php
@@ -1,4 +1,5 @@
<?php
+
/**
* This file is part of the ramsey/uuid library
*
@@ -7,53 +8,44 @@
*
* @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
* @license http://opensource.org/licenses/MIT MIT
- * @link https://benramsey.com/projects/ramsey-uuid/ Documentation
- * @link https://packagist.org/packages/ramsey/uuid Packagist
- * @link https://github.com/ramsey/uuid GitHub
*/
+declare(strict_types=1);
+
namespace Ramsey\Uuid\Converter\Time;
-use Moontoast\Math\BigNumber;
use Ramsey\Uuid\Converter\TimeConverterInterface;
+use Ramsey\Uuid\Math\BrickMathCalculator;
+use Ramsey\Uuid\Type\Hexadecimal;
+use Ramsey\Uuid\Type\Time;
/**
- * BigNumberTimeConverter uses the moontoast/math library's `BigNumber` to
- * provide facilities for converting parts of time into representations that may
- * be used in UUIDs
+ * Previously used to integrate moontoast/math as a bignum arithmetic library,
+ * BigNumberTimeConverter is deprecated in favor of GenericTimeConverter
+ *
+ * @deprecated Transition to {@see GenericTimeConverter}.
+ *
+ * @psalm-immutable
*/
class BigNumberTimeConverter implements TimeConverterInterface
{
/**
- * Uses the provided seconds and micro-seconds to calculate the time_low,
- * time_mid, and time_high fields used by RFC 4122 version 1 UUIDs
- *
- * @param string $seconds
- * @param string $microSeconds
- * @return string[] An array containing `low`, `mid`, and `high` keys
- * @link http://tools.ietf.org/html/rfc4122#section-4.2.2
+ * @var TimeConverterInterface
*/
- public function calculateTime($seconds, $microSeconds)
- {
- $uuidTime = new BigNumber('0');
-
- $sec = new BigNumber($seconds);
- $sec->multiply('10000000');
+ private $converter;
- $usec = new BigNumber($microSeconds);
- $usec->multiply('10');
-
- $uuidTime
- ->add($sec)
- ->add($usec)
- ->add('122192928000000000');
+ public function __construct()
+ {
+ $this->converter = new GenericTimeConverter(new BrickMathCalculator());
+ }
- $uuidTimeHex = sprintf('%016s', $uuidTime->convertToBase(16));
+ public function calculateTime(string $seconds, string $microseconds): Hexadecimal
+ {
+ return $this->converter->calculateTime($seconds, $microseconds);
+ }
- return [
- 'low' => substr($uuidTimeHex, 8),
- 'mid' => substr($uuidTimeHex, 4, 4),
- 'hi' => substr($uuidTimeHex, 0, 4),
- ];
+ public function convertTime(Hexadecimal $uuidTimestamp): Time
+ {
+ return $this->converter->convertTime($uuidTimestamp);
}
}