X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=doc%2Fclasses%2FMCollective%2FCache.html;fp=doc%2Fclasses%2FMCollective%2FCache.html;h=0000000000000000000000000000000000000000;hb=7c9314f502cde8daad23b61d10b24a542e04154a;hp=f3880fe073f3bdf99271e2db6db8e8490784b447;hpb=d1f1649ba43c5cbc43c4beb2380096ba051d646a;p=packages%2Fprecise%2Fmcollective.git diff --git a/doc/classes/MCollective/Cache.html b/doc/classes/MCollective/Cache.html deleted file mode 100644 index f3880fe..0000000 --- a/doc/classes/MCollective/Cache.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - -
-Module | -MCollective::Cache | -
In: | -
-
- lib/mcollective/cache.rb
-
- - |
-
-A class to manage a number of named caches. Each cache can have a unique -timeout for keys in it and each cache has an independent Mutex protecting -access to it. -
--This cache is setup early in the process -of loading the mcollective libraries, before any threads are created etc -making it suitable as a cross thread cache or just a store for Mutexes you -need to use across threads like in an Agent or -something. -
-- # sets up a new cache, noop if it already exist - Cache.setup(:ddl, 600) - => true - - # writes an item to the :ddl cache, this item will - # be valid on the cache for 600 seconds - Cache.write(:ddl, :something, "value") - => "value" - - # reads from the cache, read failures due to non existing - # data or expired data will raise an exception - Cache.read(:ddl, :something) - => "value" - - # time left till expiry, raises if nothing is found - Cache.ttl(:ddl, :something) - => 500 - - # forcibly evict something from the cache - Cache.invalidate!(:ddl, :something) - => "value" - - # deletes an entire named cache and its mutexes - Cache.delete!(:ddl) - => true - - # you can also just use this cache as a global mutex store - Cache.setup(:mylock) - - Cache.synchronize(:mylock) do - do_something() - end -- -
- # File lib/mcollective/cache.rb, line 70 -70: def self.check_cache!(cache_name) -71: raise_code(:PLMC13, "Could not find a cache called '%{cache_name}'", :debug, :cache_name => cache_name) unless has_cache?(cache_name) -72: end --
- # File lib/mcollective/cache.rb, line 80 -80: def self.delete!(cache_name) -81: check_cache!(cache_name) -82: -83: @locks_mutex.synchronize do -84: @cache_locks.delete(cache_name) -85: @cache.delete(cache_name) -86: end -87: -88: true -89: end --
- # File lib/mcollective/cache.rb, line 74 -74: def self.has_cache?(cache_name) -75: @locks_mutex.synchronize do -76: @cache.include?(cache_name) -77: end -78: end --
- # File lib/mcollective/cache.rb, line 139 -139: def self.invalidate!(cache_name, key) -140: check_cache!(cache_name) -141: -142: @cache_locks[cache_name].synchronize do -143: return false unless @cache[cache_name].include?(key) -144: -145: @cache[cache_name].delete(key) -146: end -147: end --
- # File lib/mcollective/cache.rb, line 103 -103: def self.read(cache_name, key) -104: check_cache!(cache_name) -105: -106: unless ttl(cache_name, key) > 0 -107: raise_code(:PLMC11, "Cache expired on '%{cache_name}' key '%{item}'", :debug, :cache_name => cache_name, :item => key) -108: end -109: -110: log_code(:PLMC12, "Cache hit on '%{cache_name}' key '%{item}'", :debug, :cache_name => cache_name, :item => key) -111: -112: @cache_locks[cache_name].synchronize do -113: @cache[cache_name][key][:value] -114: end -115: end --
- # File lib/mcollective/cache.rb, line 56 -56: def self.setup(cache_name, ttl=300) -57: @locks_mutex.synchronize do -58: break if @cache_locks.include?(cache_name) -59: -60: @cache_locks[cache_name] = Mutex.new -61: -62: @cache_locks[cache_name].synchronize do -63: @cache[cache_name] = {:max_age => Float(ttl)} -64: end -65: end -66: -67: true -68: end --
- # File lib/mcollective/cache.rb, line 129 -129: def self.synchronize(cache_name) -130: check_cache!(cache_name) -131: -132: raise_code(:PLMC14, "No block supplied to synchronize on cache '%{cache_name}'", :debug, :cache_name => cache_name) unless block_given? -133: -134: @cache_locks[cache_name].synchronize do -135: yield -136: end -137: end --
- # File lib/mcollective/cache.rb, line 117 -117: def self.ttl(cache_name, key) -118: check_cache!(cache_name) -119: -120: @cache_locks[cache_name].synchronize do -121: unless @cache[cache_name].include?(key) -122: raise_code(:PLMC15, "No item called '%{item}' for cache '%{cache_name}'", :debug, :cache_name => cache_name, :item => key) -123: end -124: -125: @cache[cache_name][:max_age] - (Time.now - @cache[cache_name][key][:cache_create_time]) -126: end -127: end --
- # File lib/mcollective/cache.rb, line 91 - 91: def self.write(cache_name, key, value) - 92: check_cache!(cache_name) - 93: - 94: @cache_locks[cache_name].synchronize do - 95: @cache[cache_name][key] ||= {} - 96: @cache[cache_name][key][:cache_create_time] = Time.now - 97: @cache[cache_name][key][:value] = value - 98: end - 99: -100: value -101: end --