diff options
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/cache.py')
-rw-r--r-- | lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/cache.py | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/cache.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/cache.py deleted file mode 100644 index fbc0051d..00000000 --- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/cache.py +++ /dev/null @@ -1,73 +0,0 @@ -# This file is part of Buildbot. Buildbot is free software: you can -# redistribute it and/or modify it under the terms of the GNU General Public -# License as published by the Free Software Foundation, version 2. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Copyright Buildbot Team Members - -from buildbot.util import lru -from buildbot import config -from twisted.application import service - -class CacheManager(config.ReconfigurableServiceMixin, service.Service): - """ - A manager for a collection of caches, each for different types of objects - and with potentially-overlapping key spaces. - - There is generally only one instance of this class, available at - C{master.caches}. - """ - - # a cache of length one still has many benefits: it collects objects that - # remain referenced elsewhere; it collapses simultaneous misses into one - # miss function; and it will optimize repeated fetches of the same object. - DEFAULT_CACHE_SIZE = 1 - - def __init__(self): - self.setName('caches') - self.config = {} - self._caches = {} - - def get_cache(self, cache_name, miss_fn): - """ - Get an L{AsyncLRUCache} object with the given name. If such an object - does not exist, it will be created. Since the cache is permanent, this - method can be called only once, e.g., in C{startService}, and it value - stored indefinitely. - - @param cache_name: name of the cache (usually the name of the type of - object it stores) - @param miss_fn: miss function for the cache; see L{AsyncLRUCache} - constructor. - @returns: L{AsyncLRUCache} instance - """ - try: - return self._caches[cache_name] - except KeyError: - max_size = self.config.get(cache_name, self.DEFAULT_CACHE_SIZE) - assert max_size >= 1 - c = self._caches[cache_name] = lru.AsyncLRUCache(miss_fn, max_size) - return c - - def reconfigService(self, new_config): - self.config = new_config.caches - for name, cache in self._caches.iteritems(): - cache.set_max_size(new_config.caches.get(name, - self.DEFAULT_CACHE_SIZE)) - - return config.ReconfigurableServiceMixin.reconfigService(self, - new_config) - - def get_metrics(self): - return dict([ - (n, dict(hits=c.hits, refhits=c.refhits, - misses=c.misses, max_size=c.max_size)) - for n, c in self._caches.iteritems()]) |