Module: MinerMover

Defined in:
lib/miner_mover.rb,
lib/miner_mover/run.rb,
lib/miner_mover/config.rb,
lib/miner_mover/worker.rb

Defined Under Namespace

Modules: Config, Ore Classes: Miner, Mover, Run, Worker

Class Method Summary collapse

Class Method Details

.log_fmt(timer, id, msg) ⇒ Object

called by Worker instances, available for general use



3
4
5
# File 'lib/miner_mover.rb', line 3

def self.log_fmt(timer, id, msg)
  format("%s %s %s", timer.elapsed_display, id, msg)
end

.randomize(i, squeeze = 0) ⇒ Object

i - 50% at squeeze 0 i - 25% at squeeze 1, 12.5% at squeeze 2, etc.



9
10
11
12
13
14
15
16
17
# File 'lib/miner_mover.rb', line 9

def self.randomize(i, squeeze = 0)
  r, base = rand, 0.5
  # every squeeze, increase the base closer to 1 and cut the rand in half
  squeeze.times { |s|
    r *= 0.5
    base += 0.5 ** (s+2)
  }
  i * (base + r)
end

.work(duration, type = :wait, fib = 30) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/miner_mover/worker.rb', line 6

def self.work(duration, type = :wait, fib = 30)
  case type
  when :wait
    sleep duration
    duration
  when :cpu
    t = CompSci::Timer.new
    CompSci::Fibonacci.classic(fib) while t.elapsed < duration
    t.elapsed
  when :instant
    0
  else
    raise "unknown work type: #{type.inspect}"
  end
end