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