summaryrefslogtreecommitdiff
path: root/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php')
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php128
1 files changed, 0 insertions, 128 deletions
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php
deleted file mode 100644
index d767ad40f..000000000
--- a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-
-namespace Jaeger\Util;
-
-use Psr\Cache\CacheItemInterface;
-use Psr\Cache\CacheItemPoolInterface;
-
-class RateLimiter
-{
- /**
- * @var CacheItemPoolInterface
- */
- private $cache;
-
- /**
- * @var CacheItemInterface
- */
- private $balance;
-
- /**
- * @var CacheItemInterface
- */
- private $lastTick;
-
- /**
- * @var float
- */
- private $creditsPerNanosecond = 0;
-
- /**
- * @var float
- */
- private $maxBalance = 0;
-
- /**
- * RateLimiter constructor.
- *
- * @param CacheItemPoolInterface $cache
- * @param string $currentBalanceKey key of current balance value in $cache
- * @param string $lastTickKey key of last tick value in $cache
- * @throws \Psr\Cache\InvalidArgumentException
- */
- public function __construct(
- CacheItemPoolInterface $cache,
- string $currentBalanceKey,
- string $lastTickKey
- ) {
- $this->cache = $cache;
- $this->balance = $this->cache->getItem($currentBalanceKey);
- $this->lastTick = $this->cache->getItem($lastTickKey);
- }
-
- /**
- * @param $itemCost
- * @return bool
- */
- public function checkCredit($itemCost)
- {
- if (!$this->creditsPerNanosecond) {
- return false;
- }
-
- list($lastTick, $balance) = $this->getState();
-
- if (!$lastTick) {
- $this->saveState(hrtime(true), 0);
- return true;
- }
-
- $currentTick = hrtime(true);
- $elapsedTime = $currentTick - $lastTick;
- $balance += $elapsedTime * $this->creditsPerNanosecond;
- if ($balance > $this->maxBalance) {
- $balance = $this->maxBalance;
- }
-
- $result = false;
- if ($balance >= $itemCost) {
- $balance -= $itemCost;
- $result = true;
- }
-
- $this->saveState($currentTick, $balance);
-
- return $result;
- }
-
-
- /**
- * Initializes limiter costs and boundaries
- *
- * @param float $creditsPerNanosecond
- * @param float $maxBalance
- */
- public function initialize(float $creditsPerNanosecond, float $maxBalance)
- {
- $this->creditsPerNanosecond = $creditsPerNanosecond;
- $this->maxBalance = $maxBalance;
- }
-
- /**
- * Method loads last tick and current balance from cache
- *
- * @return array [$lastTick, $balance]
- */
- private function getState() : array
- {
- return [
- $this->lastTick->get(),
- $this->balance->get()
- ];
- }
-
- /**
- * Method saves last tick and current balance into cache
- *
- * @param integer $lastTick
- * @param float $balance
- */
- private function saveState($lastTick, $balance)
- {
- $this->lastTick->set($lastTick);
- $this->balance->set($balance);
- $this->cache->saveDeferred($this->lastTick);
- $this->cache->saveDeferred($this->balance);
- $this->cache->commit();
- }
-}