Class: MinerMover::Worker

Inherits:
Object
  • Object
show all
Defined in:
lib/miner_mover/worker.rb

Direct Known Subclasses

Miner, Mover

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(variance: 0, logging: false, timer: nil) ⇒ Worker

Returns a new instance of Worker.



26
27
28
29
30
# File 'lib/miner_mover/worker.rb', line 26

def initialize(variance: 0, logging: false, timer: nil)
  @variance = variance
  @logging = logging
  @timer = timer || CompSci::Timer.new
end

Instance Attribute Details

#loggingObject

Returns the value of attribute logging.



23
24
25
# File 'lib/miner_mover/worker.rb', line 23

def logging
  @logging
end

#timerObject (readonly)

Returns the value of attribute timer.



24
25
26
# File 'lib/miner_mover/worker.rb', line 24

def timer
  @timer
end

#varianceObject

Returns the value of attribute variance.



23
24
25
# File 'lib/miner_mover/worker.rb', line 23

def variance
  @variance
end

Instance Method Details

#idObject



32
33
34
# File 'lib/miner_mover/worker.rb', line 32

def id
  self.object_id.to_s.rjust(8, '0')
end

#log(msg) ⇒ Object



47
48
49
# File 'lib/miner_mover/worker.rb', line 47

def log msg
  @logging && puts(MinerMover.log_fmt(@timer, self.id, msg))
end

#stateObject



36
37
38
39
40
41
# File 'lib/miner_mover/worker.rb', line 36

def state
  { id: self.id,
    logging: @logging,
    timer: @timer.elapsed_ms.round,
    variance: @variance }
end

#to_sObject



43
44
45
# File 'lib/miner_mover/worker.rb', line 43

def to_s
  self.state.to_s
end

#varied(n) ⇒ Object

4 levels: 0 - no variance 1 - 12.5% variance (squeeze = 2) 2 - 25% variance (squeeze = 1) 3 - 50% variance (squeeze = 0)



56
57
58
59
60
61
62
63
64
65
# File 'lib/miner_mover/worker.rb', line 56

def varied n
  case @variance
  when 0
    n
  when 1..3
    MinerMover.randomize(n, 3 - @variance)
  else
    raise "unexpected variance: #{@variance.inspect}"
  end
end