class RSwim::Member::Peer

Public Class Methods

new(id, node_member_id, member_pool) click to toggle source
Calls superclass method RSwim::Member::Base::new
# File lib/rswim/member/peer.rb, line 6
def initialize(id, node_member_id, member_pool)
  super(id)
  @member_pool = member_pool
  @transmission_state = TransmissionState::Ready.new(id, node_member_id, member_pool)
  @health_state = HealthState::Alive.new(id, member_pool)
  @forwarding_state = ForwardingState::Ready.new(id, node_member_id)
end

Public Instance Methods

can_be_pinged?() click to toggle source
# File lib/rswim/member/peer.rb, line 80
def can_be_pinged?
  @health_state.can_be_pinged?
end
failed_to_reply() click to toggle source
# File lib/rswim/member/peer.rb, line 43
def failed_to_reply
  @health_state.member_failed_to_reply
end
forward_ack() click to toggle source
# File lib/rswim/member/peer.rb, line 54
def forward_ack
  @forwarding_state.forward_ack_to_member
end
halt() click to toggle source

Commands

# File lib/rswim/member/peer.rb, line 50
def halt
  @transmission_state = TransmissionState::Off.new(@id)
end
increment_propagation_count() click to toggle source
# File lib/rswim/member/peer.rb, line 72
def increment_propagation_count
  @health_state.increment_propagation_count
end
ping!() click to toggle source

send a ping message to this peer

# File lib/rswim/member/peer.rb, line 17
def ping!
  @transmission_state.enqueue_ping
end
ping_from!(source_id) click to toggle source

send a ping message to this peer on behalf of source with source_id

# File lib/rswim/member/peer.rb, line 27
def ping_from!(source_id)
  @transmission_state.enqueue_ping_from(source_id)
end
ping_request!(target_id) click to toggle source

send ping request to this peer trying to reach target with target_id

# File lib/rswim/member/peer.rb, line 22
def ping_request!(target_id)
  @transmission_state.enqueue_ping_request(target_id)
end
prepare_output() click to toggle source
# File lib/rswim/member/peer.rb, line 64
def prepare_output
  [@transmission_state, @forwarding_state].flat_map(&:prepare_output)
end
prepare_update_entry() click to toggle source
# File lib/rswim/member/peer.rb, line 68
def prepare_update_entry
  @health_state.update_entry
end
replied_in_time() click to toggle source
# File lib/rswim/member/peer.rb, line 39
def replied_in_time
  update_suspicion(:alive)
end
replied_with_ack() click to toggle source

 call this when you received ack from member

# File lib/rswim/member/peer.rb, line 35
def replied_with_ack
  @transmission_state.member_replied_with_ack
end
update(elapsed_seconds) click to toggle source
# File lib/rswim/member/peer.rb, line 58
def update(elapsed_seconds)
  @transmission_state = @transmission_state.advance(elapsed_seconds)
  @forwarding_state = @forwarding_state.advance(elapsed_seconds)
  @health_state = @health_state.advance(elapsed_seconds)
end
update_suspicion(status, incarnation_number=nil) click to toggle source
# File lib/rswim/member/peer.rb, line 76
def update_suspicion(status, incarnation_number=nil)
  @health_state = @health_state.update_suspicion(status, incarnation_number)
end