Package org.jgroups.util
Class NonBlockingCredit
java.lang.Object
org.jgroups.util.Credit
org.jgroups.util.NonBlockingCredit
Non-blocking credit for a unicast destination.
Instead of blocking when insufficient credits are available for sending a message, this class queues the message and sends it at a later time when enough credits have been received to send it.
JIRA: https://issues.redhat.com/browse/JGRP-2172
- Since:
- 4.0.4
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final SizeBoundedQueue<Message> protected final LongAdderprotected booleanFields inherited from class org.jgroups.util.Credit
avg_blockings, credits_available, credits_left, done, last_credit_request, lock, num_blockings -
Constructor Summary
ConstructorsConstructorDescriptionNonBlockingCredit(long credits, int max_size, Lock lock) NonBlockingCredit(long credits, int max_size, Lock lock, Consumer<Message> send_function) -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanaddToQueue(Message msg, int length) booleandecrementIfEnoughCredits(Message msg, int credits, long timeout) Decrements the sender's credits by the size of the message.intintintvoidincrement(long credits, long max_credits) booleanreset()Sets this credit to be done and releases all blocked threads.voidtoString()Methods inherited from class org.jgroups.util.Credit
decrement, decrementAndGet, get, getAverageBlockTime, getNumBlockings, needToSendCreditRequest
-
Field Details
-
msg_queue
-
queuing
protected boolean queuing -
send_function
-
NO_OP_SEND_FUNCTION
-
num_queued
-
-
Constructor Details
-
NonBlockingCredit
-
NonBlockingCredit
-
-
Method Details
-
isQueuing
public boolean isQueuing() -
getQueuedMessages
public int getQueuedMessages() -
getQueuedMessageSize
public int getQueuedMessageSize() -
getEnqueuedMessages
public int getEnqueuedMessages() -
resetStats
public void resetStats()- Overrides:
resetStatsin classCredit
-
decrementIfEnoughCredits
Decrements the sender's credits by the size of the message.- Overrides:
decrementIfEnoughCreditsin classCredit- Parameters:
msg- The messagecredits- The number of bytes to decrement the credits. IsMessage.getLength().timeout- Ignored- Returns:
- True if the message was sent, false if it was queued
-
increment
public void increment(long credits, long max_credits) -
reset
Description copied from class:CreditSets this credit to be done and releases all blocked threads. This is not revertable; a new credit has to be created -
toString
-
addToQueue
-