Completed
Push — master ( 5fb806...0f3195 )
by Nicolas
21:50
created

LoadBalancerExtension   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 3
c 1
b 0
f 1
lcom 0
cbo 1
dl 0
loc 29
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A load() 0 23 3
1
<?php
2
3
namespace NBN\LoadBalancerBundle\DependencyInjection;
4
5
use NBN\LoadBalancer\LoadBalancer;
6
use Symfony\Component\Config\FileLocator;
7
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
8
use Symfony\Component\DependencyInjection\Reference;
9
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
10
use Symfony\Component\DependencyInjection\ContainerBuilder;
11
12
/**
13
 * @author Nicolas Bastien <[email protected]>
14
 */
15
class LoadBalancerExtension extends Extension
16
{
17
    /**
18
     * {@inheritDoc}
19
     */
20
    public function load(array $configs, ContainerBuilder $container)
21
    {
22
        $configuration = new Configuration();
23
        $config = $this->processConfiguration($configuration, $configs);
24
25
        $container->setParameter('nbn_loadbalancer.load_limit', $config['load_limit']);
26
27
        $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
28
        $loader->load('chooser.xml');
29
30
        //Instanciate LoadBalancer with corresponding chooser and hosts
31
        $container
32
            ->register('nbn_loadbalancer.loadbalancer', LoadBalancer::class)
33
            ->addArgument([])
34
            ->addArgument(new Reference(sprintf('nbn_loadbalancer.chooser.%s', $config['host_chooser'])));
35
36
        if (count($config['hosts'])) {
37
            $loadbalancer = $container->getDefinition('nbn_loadbalancer.loadbalancer');
38
            foreach($config['hosts'] as $id => $hostConfiguration) {
0 ignored issues
show
Coding Style introduced by
Expected 1 space after FOREACH keyword; 0 found
Loading history...
39
                $loadbalancer->addMethodCall('addHostByConfiguration', [$id, $hostConfiguration['url'], $hostConfiguration['settings']]);
40
            }
41
        }
42
    }
43
}
44