Class: SgtnClient::Core::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/sgtn-client/core/cache.rb

Defined Under Namespace

Classes: Entry

Class Method Summary collapse

Class Method Details

.clearObject



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

.keysObject



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