class RSwim::Member::TransmissionState::AwaitingAck

Public Class Methods

new(id, node_member_id, member_pool, source_ids, target_ids) click to toggle source
Calls superclass method RSwim::Member::Base::new
# File lib/rswim/member/transmission_state/awaiting_ack.rb, line 7
def initialize(id, node_member_id, member_pool, source_ids, target_ids)
  super
  @life_time_seconds = 0
  @done = false
end

Public Instance Methods

advance(elapsed_seconds) click to toggle source
# File lib/rswim/member/transmission_state/awaiting_ack.rb, line 22
def advance(elapsed_seconds)
  @life_time_seconds += elapsed_seconds
  if @done
    Ready.new(@id, @node_member_id, @member_pool, @source_ids, @target_ids)
  elsif @life_time_seconds > R_MS / 1000.0
    if @source_ids.include?(@id)
      @member_pool.member_failed_to_reply(@id)
    end
    Ready.new(@id, @node_member_id, @member_pool, @source_ids, @target_ids)
  else
    self
  end
end
member_replied_with_ack() click to toggle source
# File lib/rswim/member/transmission_state/awaiting_ack.rb, line 13
def member_replied_with_ack
  if @source_ids.include?(@id)
    @member_pool.member_replied_in_time(@id)
  end
  @source_ids.each { |i| @member_pool.forward_ack_to(i) unless i == @id }
  @source_ids.clear
  @done = true
end