Class AckSenderWindow

  • All Implemented Interfaces:
    Retransmitter.RetransmitCommand

    public class AckSenderWindow
    extends java.lang.Object
    implements Retransmitter.RetransmitCommand
    ACK-based sliding window for a sender. Messages are added to the window keyed by seqno When an ACK is received, the corresponding message is removed. The Retransmitter continously iterates over the entries in the hashmap, retransmitting messages based on their creation time and an (increasing) timeout. When there are no more messages in the retransmission table left, the thread terminates. It will be re-activated when a new entry is added to the retransmission table.
    Author:
    Bela Ban
    • Method Detail

      • reset

        public void reset()
      • add

        public void add​(long seqno,
                        Message msg)
        Adds a new message to the retransmission table. If the message won't have received an ack within a certain time frame, the retransmission thread will retransmit the message to the receiver. A message will be retransmitted until an ack for it is received, or the destination member is excluded from the group
      • ack

        public void ack​(long seqno)
        Removes all messages less than or equal to seqno from msgs, and cancels their retransmission.
      • getLowestMessage

        public Message getLowestMessage()
        Returns the message with the lowest seqno
      • size

        public int size()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • printDetails

        public java.lang.String printDetails()
      • retransmit

        public void retransmit​(long first_seqno,
                               long last_seqno,
                               Address sender)
        Description copied from interface: Retransmitter.RetransmitCommand
        Get the missing messages between sequence numbers first_seqno and last_seqno. This can either be done by sending a retransmit message to destination sender (nak-based scheme), or by retransmitting the missing message(s) to sender (ack-based scheme).
        Specified by:
        retransmit in interface Retransmitter.RetransmitCommand
        Parameters:
        first_seqno - The sequence number of the first missing message
        last_seqno - The sequence number of the last missing message
        sender - The destination of the member to which the retransmit request will be sent (nak-based scheme), or to which the message will be retransmitted (ack-based scheme).
      • getLowestSeqno

        public java.lang.Long getLowestSeqno()
      • main

        public static void main​(java.lang.String[] args)