class RSwim::Agent::Base

Public Class Methods

new(pipe, node_member_id, seed_member_ids, t_ms, r_ms) click to toggle source
# File lib/rswim/agent.rb, line 6
def initialize(pipe, node_member_id, seed_member_ids, t_ms, r_ms)
  @pipe = pipe
  @state = ProtocolState.new(node_member_id, seed_member_ids, t_ms, r_ms)
end

Public Instance Methods

run() click to toggle source
# File lib/rswim/agent.rb, line 15
def run
  loop do
    elapsed_seconds = pause
    output_messages = @state.advance(@pipe.inbound, elapsed_seconds)
    output_messages.each { |message| @pipe.send(message) }
  end
end
subscribe(&block) click to toggle source
# File lib/rswim/agent.rb, line 11
def subscribe(&block)
  @state.subscribe(&block)
end

Protected Instance Methods

monotonic_seconds() click to toggle source
# File lib/rswim/agent.rb, line 29
def monotonic_seconds
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
end
pause() click to toggle source
# File lib/rswim/agent.rb, line 25
def pause
  raise 'implement this in a subclass'
end