Class: SgtnClient::Core::Cache
- Inherits:
-
Object
- Object
- SgtnClient::Core::Cache
- Defined in:
- lib/sgtn-client/core/cache.rb
Defined Under Namespace
Classes: Entry
Class Method Summary collapse
- .clear ⇒ Object
- .delete(key) ⇒ Object
- .get(key) ⇒ Object
- .has(key) ⇒ Object
- .initialize(disabled = false, opts = {}) ⇒ Object
- .invalidate(key) ⇒ Object
- .keys ⇒ Object
- .put(key, value, ttl = nil) ⇒ Object
Class Method Details
.clear ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/sgtn-client/core/cache.rb', line 68 def self.clear @mutex.synchronize do if @@data == nil return nil end SgtnClient.logger.debug "[Cache][clear]clear cache!" @@data = Hash.new end end |
.delete(key) ⇒ Object
58 59 60 61 62 63 64 65 66 |
# File 'lib/sgtn-client/core/cache.rb', line 58 def self.delete(key) @mutex.synchronize do if @@data == nil return nil end SgtnClient.logger.debug "[Cache][delete]delete cache for key: " + key @@data.delete key end end |
.get(key) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/sgtn-client/core/cache.rb', line 30 def self.get(key) if @@data == nil return nil, nil end SgtnClient.logger.debug "[Cache][get]get cache for key: " + key invalidate(key) end |
.has(key) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/sgtn-client/core/cache.rb', line 38 def self.has(key) if @@data == nil return nil end SgtnClient.logger.debug "[Cache][has]check if the cache has key: #{(@@data.has_key? key)}" @@data.has_key? key end |
.initialize(disabled = false, opts = {}) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/sgtn-client/core/cache.rb', line 10 def self.initialize(disabled=false, opts={}) @@opts = opts @mutex = Mutex.new if disabled == false @@data = Hash.new SgtnClient.logger.debug "[Cache][initialize]cache is enabled!" else @@data = nil SgtnClient.logger.debug "[Cache][initialize]cache is disabled!" end end |
.invalidate(key) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/sgtn-client/core/cache.rb', line 78 def self.invalidate(key) @mutex.synchronize do if @@data == nil return nil, nil end SgtnClient.logger.debug "[Cache][invalidate]invalidate expired cache......" now = Time.now if has(key) v = @@data[key] expired = false SgtnClient.logger.debug "[Cache][invalidate]check cache: key=#{key}, expiredtime=#{v[:expiry]}, now=#{now}, expired=#{(v[:expiry] < now)}" if v[:expiry] < now SgtnClient.logger.debug "[Cache][invalidate]before deleting the cache: data=#{@@data}" @@data.delete(key) SgtnClient.logger.debug "[Cache][invalidate]after deleting the cache: data=#{@@data}" expired = true end return expired, v[:value] else return nil, nil end end end |
.keys ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/sgtn-client/core/cache.rb', line 22 def self.keys if @@data == nil return nil end SgtnClient.logger.debug "[Cache][keys]get cache keys" @@data.keys end |
.put(key, value, ttl = nil) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/sgtn-client/core/cache.rb', line 46 def self.put(key, value, ttl=nil) @mutex.synchronize do if @@data == nil || value == nil return nil end ttl ||= @@opts[:ttl] # hours from new SgtnClient.logger.debug "[Cache][put]put cache for key '" + key + "' with expired time at'" + (Time.now + ttl*60).to_s @@data[key] = Entry.new(Time.now + ttl*60, value) end end |