Module: DummyLogGenerator::Worker

Defined in:
lib/dummy_log_generator/worker.rb

Instance Method Summary collapse

Instance Method Details

#initializeObject



5
6
7
# File 'lib/dummy_log_generator/worker.rb', line 5

def initialize
  reload
end

#reloadObject



9
10
11
12
13
# File 'lib/dummy_log_generator/worker.rb', line 9

def reload
  @rate = config[:rate]
  @formatter = config[:formatter]
  @generator = config[:generator]
end

#runObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/dummy_log_generator/worker.rb', line 16

def run
  batch_num = (@rate / 9).to_i + 1
  prev_data  = {}
  while !@stop
    current_time = Time.now.to_i
    rate_count = 0

    while !@stop && rate_count < @rate && Time.now.to_i == current_time
      batch_num.times do
        # ToDo: what if generation is slower than I/O?
        # We may should generate data and output in parallel
        prev_data = @generator.generate(prev_data)
        STDOUT.puts @formatter.format(prev_data)
      end
      rate_count += batch_num
      sleep 0.1
    end
    # wait for next second
    while !@stop && Time.now.to_i == current_time
      sleep 0.04
    end
  end
end

#stopObject



40
41
42
# File 'lib/dummy_log_generator/worker.rb', line 40

def stop
  @stop = true
end