Package org.jgroups.util
Class CreditMap
- java.lang.Object
-
- org.jgroups.util.CreditMap
-
- Direct Known Subclasses:
NonBlockingCreditMap
public class CreditMap extends java.lang.ObjectMaintains credits for senders, when credits fall below 0, a sender blocks until new credits have been received.- Author:
- Bela Ban
-
-
Field Summary
Fields Modifier and Type Field Description protected longaccumulated_creditsprotected Averageavg_block_timeprotected java.util.Map<Address,java.lang.Long>creditsprotected java.util.concurrent.locks.Conditioncredits_availableprotected booleandoneprotected java.util.concurrent.locks.Locklockprotected longmax_creditsprotected longmin_creditsprotected intnum_blockings
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()protected longcomputeLowestCredit()Needs to be called with lock heldlongcomputeLowestCreditWithAccumulated()protected booleandecrement(long credits)booleandecrement(Message msg, int credits, long timeout)Decrements credits bytes from all.protected voiddecrementAndAdd(Address member, long new_credits)Decrements credits bytes from all elements and adds new_credits to member (if non null).protected voidflushAccumulatedCredits()java.lang.Longget(Address member)longgetAccumulatedCredits()doublegetAverageBlockTime()java.util.List<Tuple<Address,java.lang.Long>>getMembersWithCreditsLessThan(long min_credits)java.util.List<Address>getMembersWithInsufficientCredits(long credit_needed)longgetMinCredits()intgetNumBlockings()java.util.Set<Address>keys()java.lang.LongputIfAbsent(Address key)java.lang.Longremove(Address key)voidreplenish(Address sender, long new_credits)voidreplenishAll()CreditMapreset()Sets this credit to be done and releases all blocked threads.voidresetStats()java.lang.StringtoString()
-
-
-
Field Detail
-
max_credits
protected final long max_credits
-
credits
protected final java.util.Map<Address,java.lang.Long> credits
-
min_credits
protected long min_credits
-
accumulated_credits
protected long accumulated_credits
-
lock
protected final java.util.concurrent.locks.Lock lock
-
credits_available
protected final java.util.concurrent.locks.Condition credits_available
-
num_blockings
protected int num_blockings
-
avg_block_time
protected final Average avg_block_time
-
done
protected boolean done
-
-
Method Detail
-
getAccumulatedCredits
public long getAccumulatedCredits()
-
getMinCredits
public long getMinCredits()
-
getNumBlockings
public int getNumBlockings()
-
getAverageBlockTime
public double getAverageBlockTime()
-
keys
public java.util.Set<Address> keys()
-
get
public java.lang.Long get(Address member)
-
remove
public java.lang.Long remove(Address key)
-
putIfAbsent
public java.lang.Long putIfAbsent(Address key)
-
getMembersWithInsufficientCredits
public java.util.List<Address> getMembersWithInsufficientCredits(long credit_needed)
-
getMembersWithCreditsLessThan
public java.util.List<Tuple<Address,java.lang.Long>> getMembersWithCreditsLessThan(long min_credits)
-
decrement
public boolean decrement(Message msg, int 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:
msg- The message to be sentcredits- Number of bytes to decrement from all memberstimeout- 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()
-
reset
public CreditMap reset()
Sets this credit to be done and releases all blocked threads. This is not revertable; a new credit has to be created
-
resetStats
public void resetStats()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.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 adds 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 nullnew_credits- Number of bytes to add to member. NOP if 0.
-
flushAccumulatedCredits
protected void flushAccumulatedCredits()
-
-