public function collect(Request $request, Response $response, \Exception $exception = null)
 {
     $info = array('calls' => 0, 'hits' => 0);
     foreach ($this->loggers as $logger) {
         $name = $logger->getName();
         $calls = $logger->getCalls();
         $hits = $logger->getHits();
         $info['calls'] += $calls;
         $info['hits'] += $hits;
         $info['caches'][$name]['options'] = $this->cacheOptions[$name];
         $info['caches'][$name]['queries'] = $logger->getQueries();
         $info['caches'][$name]['calls'] = $calls;
         $info['caches'][$name]['hits'] = $hits;
     }
     $handlers = Drivers::getDrivers();
     foreach ($handlers as $handler) {
         $pieces = explode('\\', $handler);
         $name = array_pop($pieces);
         if (!in_array($name, array('Ephemeral', 'Composite'))) {
             $info['availableDrivers'][] = $name;
         }
     }
     $info['default'] = $this->defaultCache;
     $this->data = $info;
 }
 protected function getCachesNode()
 {
     $handlers = array_keys(Drivers::getDrivers());
     $treeBuilder = new TreeBuilder();
     $node = $treeBuilder->root('caches');
     $childNode = $node->fixXmlConfig('handler')->requiresAtLeastOneElement()->useAttributeAsKey('name')->prototype('array')->children()->arrayNode('handlers')->requiresAtLeastOneElement()->defaultValue(array('FileSystem'))->prototype('scalar')->validate()->ifNotInArray($handlers)->thenInvalid('A handler of that name is not registered.')->end()->end()->end()->booleanNode('registerDoctrineAdapter')->defaultFalse()->end()->booleanNode('inMemory')->defaultTrue()->end();
     foreach ($handlers as $handler) {
         if ($handler !== 'Composite') {
             $this->addHandlerSettings($handler, $childNode);
         }
     }
     $childNode->end();
     return $node;
 }
 static function createHandler($types, $options)
 {
     $handlers = Drivers::getDrivers();
     $h = array();
     foreach ($types as $type) {
         $class = $handlers[$type];
         if ($type === 'Memcache' && isset($options[$type])) {
             // Fix servers spec since underlying drivers expect plain arrays, not hashes.
             $servers = array();
             foreach ($options[$type]['servers'] as $serverSpec) {
                 $servers[] = array($serverSpec['server'], $serverSpec['port'], isset($serverSpec['weight']) ? $serverSpec['weight'] : null);
             }
             $options[$type]['servers'] = $servers;
         }
         $opts = isset($options[$type]) ? $options[$type] : array();
         $h[] = new $class($opts);
     }
     if (count($h) == 1) {
         return reset($h);
     }
     $class = $handlers['Composite'];
     $handler = new $class(array('drivers' => $h));
     return $handler;
 }
 /**
  * Returns the current list of handlers that the system is able to use.
  *
  * @return array
  */
 public function getDrivers()
 {
     return Drivers::getDrivers();
 }
 public function setUp()
 {
     $this->handlers = Drivers::getDrivers();
 }
 public function testGetDriverClass()
 {
     Drivers::getDriverClass('Array');
     $this->assertEquals('Stash\\Driver\\Ephemeral', Drivers::getDriverClass('Array'), 'getDriverClass returns proper classname for Array driver');
 }