Beberlei\Bundle\MetricsBundle\DependencyInjection\BeberleiMetricsExtension::createCollector PHP Method

createCollector() private method

private createCollector ( $type, $config )
    private function createCollector($type, $config)
    {
        $definition = new DefinitionDecorator('beberlei_metrics.collector_proto.' . $config['type']);
        // Theses listeners should be as late as possible
        $definition->addTag('kernel.event_listener', array('method' => 'flush', 'priority' => -1024, 'event' => 'kernel.terminate'));
        $definition->addTag('kernel.event_listener', array('method' => 'flush', 'priority' => -1024, 'event' => 'console.terminate'));
        if (count($config['tags']) > 0) {
            $definition->addMethodCall('setTags', array($config['tags']));
        }
        switch ($type) {
            case 'doctrine_dbal':
                $ref = $config['connection'] ? sprintf('doctrine.dbal.%s_connection', $config['connection']) : 'database_connection';
                $definition->replaceArgument(0, new Reference($ref));
                return $definition;
            case 'graphite':
                $definition->replaceArgument(0, $config['host'] ?: 'localhost');
                $definition->replaceArgument(1, $config['port'] ?: 2003);
                $definition->replaceArgument(2, $config['protocol'] ?: 'tcp');
                return $definition;
            case 'influxdb':
                $definition->replaceArgument(0, new Reference($config['influxdb_client']));
                return $definition;
            case 'librato':
                $definition->replaceArgument(1, $config['source']);
                $definition->replaceArgument(2, $config['username']);
                $definition->replaceArgument(3, $config['password']);
                return $definition;
            case 'logger':
            case 'null':
                return $definition;
            case 'prometheus':
                $definition->replaceArgument(0, new Reference($config['prometheus_collector_registry']));
                $definition->replaceArgument(1, $config['namespace']);
                return $definition;
            case 'statsd':
                $definition->replaceArgument(0, $config['host'] ?: 'localhost');
                $definition->replaceArgument(1, $config['port'] ?: 8125);
                $definition->replaceArgument(2, (string) $config['prefix']);
                return $definition;
            case 'telegraf':
                $definition->replaceArgument(0, $config['host'] ?: 'localhost');
                $definition->replaceArgument(1, $config['port'] ?: 8125);
                $definition->replaceArgument(2, (string) $config['prefix']);
                return $definition;
            case 'zabbix':
                $sender = new Definition('Net\\Zabbix\\Sender');
                if ($config['file']) {
                    $senderConfig = new Definition('Net\\Zabbix\\Agent\\Config');
                    $senderConfig->addArgument($config['file']);
                    $sender->addMethodCall('importAgentConfig', array($senderConfig));
                } else {
                    $sender->addArgument($config['host'] ?: 'localhost');
                    $sender->addArgument((int) $config['port'] ?: 10051);
                }
                $definition->replaceArgument(0, $sender);
                $definition->replaceArgument(1, $config['prefix']);
                return $definition;
            default:
                throw new \InvalidArgumentException(sprintf('The type "%s" is not supported', $type));
        }
    }
BeberleiMetricsExtension