Class: WebShield::MemoryStore

Inherits:
Object
  • Object
show all
Defined in:
lib/web_shield/memory_store.rb

Instance Method Summary collapse

Constructor Details

#initializeMemoryStore

Returns a new instance of MemoryStore.



5
6
7
8
# File 'lib/web_shield/memory_store.rb', line 5

def initialize
  @data = {}
  @lock = Monitor.new
end

Instance Method Details

#clearObject



33
34
35
# File 'lib/web_shield/memory_store.rb', line 33

def clear
  @data.clear
end

#incr(key, period = 0) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/web_shield/memory_store.rb', line 10

def incr(key, period = 0)
  key = key.to_sym
  current_period = period > 0 ? (Time.now.to_i / period) : 0

  @lock.synchronize do
    if @data[key]
      if @data[key][1] == current_period
        @data[key][0] += 1
      else
        @data[key][1] = current_period
        @data[key][0] = 1
      end
    else
      @data[key] = [1, current_period]
      1
    end
  end
end

#reset(key) ⇒ Object



29
30
31
# File 'lib/web_shield/memory_store.rb', line 29

def reset(key)
  @data.delete(key.to_sym)
end