Module: TimeWindowDropCollector::Utils
- Included in:
- Storage
- Defined in:
- lib/time_window_drop_collector/utils.rb
Instance Method Summary collapse
- #grouping_count(key_values) ⇒ Object
- #slice_milliseconds ⇒ Object
- #slice_start_timestamp(time) ⇒ Object
- #timestamp ⇒ Object
- #timestamp_key(key, time = timestamp) ⇒ Object
- #timestamp_key_multi(keys) ⇒ Object
- #window_keys(key, now = timestamp) ⇒ Object
- #window_keys_multi(keys) ⇒ Object
Instance Method Details
#grouping_count(key_values) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 |
# File 'lib/time_window_drop_collector/utils.rb', line 2 def grouping_count( key_values ) groups = key_values.group_by { |k,v| k.match( /drop_window_(.*)_/ )[1] } result = {} groups.each do |k,v| result[k] = v.inject(0) { |acc,e| acc += e[1].to_i } end result end |
#slice_milliseconds ⇒ Object
40 41 42 |
# File 'lib/time_window_drop_collector/utils.rb', line 40 def slice_milliseconds @slice_milliseconds ||= ( window * 1000 ) / slices end |
#slice_start_timestamp(time) ⇒ Object
44 45 46 47 48 |
# File 'lib/time_window_drop_collector/utils.rb', line 44 def ( time ) time_milliseconds = ( time.to_f * 1000 ).truncate ( time_milliseconds / slice_milliseconds ) * slice_milliseconds end |
#timestamp ⇒ Object
36 37 38 |
# File 'lib/time_window_drop_collector/utils.rb', line 36 def Time.now end |
#timestamp_key(key, time = timestamp) ⇒ Object
14 15 16 |
# File 'lib/time_window_drop_collector/utils.rb', line 14 def ( key, time = ) "drop_window_#{key}_#{( time )}" end |
#timestamp_key_multi(keys) ⇒ Object
18 19 20 21 22 |
# File 'lib/time_window_drop_collector/utils.rb', line 18 def ( keys ) now = keys.map { |key| ( key, now ) }.flatten end |
#window_keys(key, now = timestamp) ⇒ Object
24 25 26 27 28 |
# File 'lib/time_window_drop_collector/utils.rb', line 24 def window_keys( key, now = ) ( 0..( slices - 1 ) ).map{ |i| ( key, now - ( ( i*slice_milliseconds ) / 1000 ) ) } end |
#window_keys_multi(keys) ⇒ Object
30 31 32 33 34 |
# File 'lib/time_window_drop_collector/utils.rb', line 30 def window_keys_multi( keys ) now = keys.map { |key| window_keys( key, now ) }.flatten end |