PluginProbe
DecaLog / 4.4.0
DecaLog v4.4.0
3.0.2 3.1.0 3.10.0 3.2.0 3.3.0 3.4.0 3.4.1 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.7.0 3.7.1 3.8.0 3.9.0 3.9.1 4.0.0 4.1.0 4.2.0 4.3.0 4.3.1 4.4.0 4.5.0 All 75 releases
decalog / includes / libraries / http / client-common / HttpClientPool / RandomClientPool.php

RandomClientPool.php in DecaLog 4.4.0, at includes/libraries/http/client-common/HttpClientPool/RandomClientPool.php

32 lines 821 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Http\Client\Common\HttpClientPool;
6
7 use Http\Client\Common\Exception\HttpClientNotFoundException;
8
9 /**
10 * RoundRobinClientPool will choose the next client in the pool.
11 *
12 * @author Joel Wurtz <joel.wurtz@gmail.com>
13 */
14 final class RandomClientPool extends HttpClientPool
15 {
16 /**
17 * {@inheritdoc}
18 */
19 protected function chooseHttpClient(): HttpClientPoolItem
20 {
21 $clientPool = array_filter($this->clientPool, function (HttpClientPoolItem $clientPoolItem) {
22 return !$clientPoolItem->isDisabled();
23 });
24
25 if (0 === count($clientPool)) {
26 throw new HttpClientNotFoundException('Cannot choose a http client as there is no one present in the pool');
27 }
28
29 return $clientPool[array_rand($clientPool)];
30 }
31 }
32