diff -r 000000000000 -r 7f95f8617b0b vendor/doctrine-common/lib/Doctrine/Common/Cache/MemcacheCache.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/doctrine-common/lib/Doctrine/Common/Cache/MemcacheCache.php Sat Sep 24 15:40:41 2011 +0200 @@ -0,0 +1,123 @@ +. + */ + +namespace Doctrine\Common\Cache; + +use \Memcache; + +/** + * Memcache cache driver. + * + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @link www.doctrine-project.org + * @since 2.0 + * @version $Revision: 3938 $ + * @author Benjamin Eberlei + * @author Guilherme Blanco + * @author Jonathan Wage + * @author Roman Borschel + * @author David Abdemoulaie + */ +class MemcacheCache extends AbstractCache +{ + /** + * @var Memcache + */ + private $_memcache; + + /** + * Sets the memcache instance to use. + * + * @param Memcache $memcache + */ + public function setMemcache(Memcache $memcache) + { + $this->_memcache = $memcache; + } + + /** + * Gets the memcache instance used by the cache. + * + * @return Memcache + */ + public function getMemcache() + { + return $this->_memcache; + } + + /** + * {@inheritdoc} + */ + public function getIds() + { + $keys = array(); + $allSlabs = $this->_memcache->getExtendedStats('slabs'); + + foreach ($allSlabs as $server => $slabs) { + if (is_array($slabs)) { + foreach (array_keys($slabs) as $slabId) { + $dump = $this->_memcache->getExtendedStats('cachedump', (int) $slabId); + + if ($dump) { + foreach ($dump as $entries) { + if ($entries) { + $keys = array_merge($keys, array_keys($entries)); + } + } + } + } + } + } + return $keys; + } + + /** + * {@inheritdoc} + */ + protected function _doFetch($id) + { + return $this->_memcache->get($id); + } + + /** + * {@inheritdoc} + */ + protected function _doContains($id) + { + return (bool) $this->_memcache->get($id); + } + + /** + * {@inheritdoc} + */ + protected function _doSave($id, $data, $lifeTime = 0) + { + return $this->_memcache->set($id, $data, 0, (int) $lifeTime); + } + + /** + * {@inheritdoc} + */ + protected function _doDelete($id) + { + return $this->_memcache->delete($id); + } +} \ No newline at end of file