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



66
67
68
69
70
71
72
73
74
# File 'lib/sgtn-client/core/cache.rb', line 66

def self.clear
    @mutex.synchronize do
        if $data == nil
            return nil
        end
        SgtnClient.logger.debug "Clear cache!"
        $data = Hash.new
    end
end

.delete(key) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/sgtn-client/core/cache.rb', line 56

def self.delete(key)
    @mutex.synchronize do
        if $data == nil
            return nil
        end
        SgtnClient.logger.debug "Delete cache for key: " + key
        $data.delete key
    end
end

.get(key) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/sgtn-client/core/cache.rb', line 27

def self.get(key)
    if $data == nil
        return nil
    end
    SgtnClient.logger.debug "Get cache for key: " + key
    invalidate
    $data[key][:value] if has(key)
end

.has(key) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/sgtn-client/core/cache.rb', line 36

def self.has(key)
    if $data == nil
        return nil
    end
    SgtnClient.logger.debug "Has cache for key: " + key
    $data.has_key? key
end

.initialize(disabled = false, opts = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/sgtn-client/core/cache.rb', line 7

def self.initialize(disabled=false, opts={})
    $opts = opts
    @mutex = Mutex.new
    SgtnClient.logger.debug "Initialize cache......"
    if disabled == false
        $data = Hash.new
        SgtnClient.logger.debug "Cache is enabled!"
    else
        SgtnClient.logger.debug "Cache is disabled!"
    end
end

.invalidateObject



76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/sgtn-client/core/cache.rb', line 76

def self.invalidate
    @mutex.synchronize do
        if $data == nil
            return nil
        end
        SgtnClient.logger.debug "Invalidating expired cache......"
        now = Time.now
        $data.each {
            |k, v|
                SgtnClient.logger.debug "Checking cache: key=#{k}, expiredtime=#{v[:expiry]}, now=#{now}, expired=#{(v[:expiry] < now)}"
            }
        $data.delete_if {|k, v| v[:expiry] < now}
    end
end

.keysObject



19
20
21
22
23
24
25
# File 'lib/sgtn-client/core/cache.rb', line 19

def self.keys
    if $data == nil
        return nil
    end
    SgtnClient.logger.debug "Get cache keys"
    $data.keys
end

.put(key, value, ttl = nil) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/sgtn-client/core/cache.rb', line 44

def self.put(key, value, ttl=nil)
    @mutex.synchronize do
        if $data == nil
            return nil
        end
        ttl ||= @opts[:ttl]
        # hours from new
        SgtnClient.logger.debug "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