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, debugging: false, timer: nil) ⇒ Worker

Returns a new instance of Worker.



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

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

Instance Attribute Details

#debuggingObject

Returns the value of attribute debugging.



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

def debugging
  @debugging
end

#loggingObject

Returns the value of attribute logging.



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

def logging
  @logging
end

#timerObject (readonly)

Returns the value of attribute timer.



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

def timer
  @timer
end

#varianceObject

Returns the value of attribute variance.



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

def variance
  @variance
end

Instance Method Details

#debug(msg) ⇒ Object



56
57
58
# File 'lib/miner_mover/worker.rb', line 56

def debug msg
  @debugging and MinerMover.log @timer, self.id, msg
end

#idObject



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

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

#log(msg) ⇒ Object



52
53
54
# File 'lib/miner_mover/worker.rb', line 52

def log msg
  @logging and MinerMover.log @timer, self.id, msg
end

#stateObject



40
41
42
43
44
45
46
# File 'lib/miner_mover/worker.rb', line 40

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

#to_sObject



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

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)



65
66
67
68
69
70
71
72
73
74
# File 'lib/miner_mover/worker.rb', line 65

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