Ejemplo n.º 1
0
  private ReceiverEntry getOrCreateReceiverEntry(Address sender, long seqno, short conn_id) {
    NakReceiverWindow win =
        new NakReceiverWindow(
            sender,
            this,
            seqno - 1,
            timer,
            use_range_based_retransmitter,
            xmit_table_num_rows,
            xmit_table_msgs_per_row,
            xmit_table_resize_factor,
            xmit_table_max_compaction_time,
            xmit_table_automatic_purging);

    if (exponential_backoff > 0)
      win.setRetransmitTimeouts(new ExponentialInterval(exponential_backoff));
    else win.setRetransmitTimeouts(new StaticInterval(timeout));

    ReceiverEntry entry = new ReceiverEntry(win, conn_id, max_stable_msgs);
    ReceiverEntry entry2 = recv_table.putIfAbsent(sender, entry);
    if (entry2 != null) return entry2;
    if (log.isTraceEnabled())
      log.trace(
          local_addr
              + ": created receiver window for "
              + sender
              + " at seqno=#"
              + seqno
              + " for conn-id="
              + conn_id);
    return entry;
  }