Class: Rox::Core::ImpressionInvoker

Inherits:
Object
  • Object
show all
Defined in:
lib/rox/core/impression/impression_invoker.rb

Instance Method Summary collapse

Constructor Details

#initialize(internal_flags, custom_property_repository, device_properties, analytics_client, is_roxy) ⇒ ImpressionInvoker

Returns a new instance of ImpressionInvoker.



6
7
8
9
10
11
12
13
14
15
# File 'lib/rox/core/impression/impression_invoker.rb', line 6

def initialize(internal_flags, custom_property_repository, device_properties, analytics_client, is_roxy)
  @internal_flags = internal_flags
  @custom_property_repository = custom_property_repository
  @device_properties = device_properties
  @analytics_client = analytics_client
  @is_roxy = is_roxy

  @impression_handlers = []
  @mutex = Mutex.new
end

Instance Method Details

#invoke(reporting_value, client_experiment, context) ⇒ Object



17
18
19
20
21
# File 'lib/rox/core/impression/impression_invoker.rb', line 17

def invoke(reporting_value, client_experiment, context)
  # TODO: Implement analytics logic

  raise_impression_event(ImpressionArgs.new(reporting_value, client_experiment, context))
end

#raise_impression_event(args) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/rox/core/impression/impression_invoker.rb', line 29

def raise_impression_event(args)
  handlers = []
  @mutex.synchronize do
    handlers = @impression_handlers.clone
  end

  handlers.each do |handler|
    handler.call(args)
  end
end

#register_impression_handler(&block) ⇒ Object



23
24
25
26
27
# File 'lib/rox/core/impression/impression_invoker.rb', line 23

def register_impression_handler(&block)
  @mutex.synchronize do
    @impression_handlers << block
  end
end