Class CreditMap

java.lang.Object
org.jgroups.util.CreditMap

public class CreditMap extends Object
Maintains credits for senders, when credits fall below 0, a sender blocks until new credits have been received.
Author:
Bela Ban
  • Field Details

    • max_credits

      protected final long max_credits
    • credits

      protected final Map<Address,Long> credits
    • min_credits

      protected long min_credits
    • accumulated_credits

      protected long accumulated_credits
    • lock

      protected final Lock lock
    • credits_available

      protected final Condition credits_available
    • num_blockings

      protected int num_blockings
    • total_block_time

      protected long total_block_time
  • Constructor Details

    • CreditMap

      public CreditMap(long max_credits)
  • Method Details

    • getAccumulatedCredits

      public long getAccumulatedCredits()
    • getMinCredits

      public long getMinCredits()
    • getNumBlockings

      public int getNumBlockings()
    • getTotalBlockTime

      public long getTotalBlockTime()
    • keys

      public Set<Address> keys()
    • get

      public Long get(Address member)
    • remove

      public Long remove(Address key)
    • putIfAbsent

      public Long putIfAbsent(Address key)
    • getMembersWithInsufficientCredits

      public List<Address> getMembersWithInsufficientCredits(long credit_needed)
    • getMembersWithCreditsLessThan

      public List<Tuple<Address,Long>> getMembersWithCreditsLessThan(long min_credits)
    • decrement

      public boolean decrement(long credits, long timeout)
      Decrements credits bytes from all. Returns true if successful, or false if not. Blocks for timeout ms (if greater than 0).
      Parameters:
      credits - Number of bytes to decrement from all members
      timeout - Number of milliseconds to wait until more credits have been received
      Returns:
      True if decrementing credits bytes succeeded, false otherwise
    • replenish

      public void replenish(Address sender, long new_credits)
    • replenishAll

      public void replenishAll()
    • clear

      public void clear()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • decrement

      protected boolean decrement(long credits)
    • computeLowestCredit

      protected long computeLowestCredit()
      Needs to be called with lock held
    • computeLowestCreditWithAccumulated

      public long computeLowestCreditWithAccumulated()
    • decrementAndAdd

      protected void decrementAndAdd(Address member, long new_credits)
      Decrements credits bytes from all elements and add new_credits to member (if non null). The lowest credit needs to be greater than min_credits. Needs to be called with lock held
      Parameters:
      member - The member to which new_credits are added. NOP if null
      new_credits - Number of bytes to add to member. NOP if 0.
    • flushAccumulatedCredits

      protected void flushAccumulatedCredits()