Class: Kameleoon::DataManager::VisitorManager

Inherits:
Object
  • Object
show all
Defined in:
lib/kameleoon/data/manager/visitor_manager.rb

Overview

VisitorManager stores Visitor instances and manages visitor sessions. It is thread-safe except ‘stop` method

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(expiration_period) ⇒ VisitorManager

Returns a new instance of VisitorManager.



15
16
17
18
19
# File 'lib/kameleoon/data/manager/visitor_manager.rb', line 15

def initialize(expiration_period)
  @expiration_period = expiration_period
  @visitors = Concurrent::Map.new
  start
end

Instance Attribute Details

#expiration_periodObject (readonly)

Returns the value of attribute expiration_period.



13
14
15
# File 'lib/kameleoon/data/manager/visitor_manager.rb', line 13

def expiration_period
  @expiration_period
end

Instance Method Details

#enumerate(&blk) ⇒ Object



44
45
46
# File 'lib/kameleoon/data/manager/visitor_manager.rb', line 44

def enumerate(&blk)
  @visitors.each_pair { |vc, v| blk.call(vc, v) }
end

#get_or_create_visitor(visitor_code) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/kameleoon/data/manager/visitor_manager.rb', line 35

def get_or_create_visitor(visitor_code)
  @visitors.compute(visitor_code) do |former_v|
    next DataManager::Visitor.new if former_v.nil?

    former_v.update_last_activity_time
    former_v
  end
end

#get_visitor(visitor_code) ⇒ Object



28
29
30
31
32
33
# File 'lib/kameleoon/data/manager/visitor_manager.rb', line 28

def get_visitor(visitor_code)
  @visitors.compute_if_present(visitor_code) do |visitor|
    visitor.update_last_activity_time
    visitor
  end
end

#sizeObject



48
49
50
# File 'lib/kameleoon/data/manager/visitor_manager.rb', line 48

def size
  @visitors.size
end

#stopObject



21
22
23
24
25
26
# File 'lib/kameleoon/data/manager/visitor_manager.rb', line 21

def stop
  return if @purge_job.nil?

  @purge_job.unschedule
  @purge_job = nil
end