Class: Yabeda::ActionCable::MeasurmentCollector

Inherits:
Object
  • Object
show all
Defined in:
lib/yabeda/action_cable/measurment_collector.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config:) ⇒ MeasurmentCollector

Returns a new instance of MeasurmentCollector.



11
12
13
14
# File 'lib/yabeda/action_cable/measurment_collector.rb', line 11

def initialize(config:)
  @config = config
  @mutex = Mutex.new
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



8
9
10
# File 'lib/yabeda/action_cable/measurment_collector.rb', line 8

def config
  @config
end

#last_collected_atObject

Returns the value of attribute last_collected_at.



9
10
11
# File 'lib/yabeda/action_cable/measurment_collector.rb', line 9

def last_collected_at
  @last_collected_at
end

Instance Method Details

#collect_measurment(payload) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/yabeda/action_cable/measurment_collector.rb', line 20

def collect_measurment(payload)
  return if on_cooldown?

  run_unless_already_running do
    self.last_collected_at = Time.now

    measure_connection_count
    measure_pubsub_latency(payload)
  end
end

#measureObject



16
17
18
# File 'lib/yabeda/action_cable/measurment_collector.rb', line 16

def measure
  ::ActionCable.server.broadcast(config.stream_name, measurment_payload)
end