Package org.jgroups.util
Class MaxOneThreadPerSender
- java.lang.Object
-
- org.jgroups.util.SubmitToThreadPool
-
- org.jgroups.util.MaxOneThreadPerSender
-
- All Implemented Interfaces:
MessageProcessingPolicy
- Direct Known Subclasses:
UnbatchOOBBatches
public class MaxOneThreadPerSender extends SubmitToThreadPool
MessageProcessingPolicywhich processes regular messages and message batches by assigning a max of 1 thread per message from the same sender. So if we have senders A, B, C and D, we'll have no more than 4 threads handling regular unicasts and 4 threads handling regular multicasts.See JGRP-2143 for details.
When using virtual threads, we probably don't need this anymore, and can use a virtual thread to send messages / message batches directly up to UNICAST or NAKACK.- Since:
- 4.0
- Author:
- Bela Ban
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classMaxOneThreadPerSender.BatchHandlerLoopprotected classMaxOneThreadPerSender.Entryprotected classMaxOneThreadPerSender.MessageTable-
Nested classes/interfaces inherited from class org.jgroups.util.SubmitToThreadPool
SubmitToThreadPool.BatchHandler, SubmitToThreadPool.SingleLoopbackHandler, SubmitToThreadPool.SingleMessageHandler, SubmitToThreadPool.SingleMessageHandlerWithClusterName
-
-
Field Summary
Fields Modifier and Type Field Description protected intmax_buffer_sizeprotected MaxOneThreadPerSender.MessageTablemcastsprotected MaxOneThreadPerSender.MessageTableucasts-
Fields inherited from class org.jgroups.util.SubmitToThreadPool
log, tp, tp_id
-
-
Constructor Summary
Constructors Constructor Description MaxOneThreadPerSender()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddestroy()Called before the transport is stoppedjava.lang.Stringdump()voidinit(TP transport)Called after creation.booleanloopback(Message msg, boolean oob)Process a message that was not received from the transport but from above (e.g.booleanloopback(MessageBatch batch, boolean oob)booleanprocess(Message msg, boolean oob)Process a message received from the transportbooleanprocess(MessageBatch batch, boolean oob)Process a batch received from the transportvoidreset()To reset statsvoidviewChange(java.util.List<Address> members)-
Methods inherited from class org.jgroups.util.SubmitToThreadPool
getTransport, removeAndDispatchNonBundledMessages
-
-
-
-
Field Detail
-
mcasts
protected final MaxOneThreadPerSender.MessageTable mcasts
-
ucasts
protected final MaxOneThreadPerSender.MessageTable ucasts
-
max_buffer_size
protected int max_buffer_size
-
-
Method Detail
-
dump
public java.lang.String dump()
-
reset
public void reset()
Description copied from interface:MessageProcessingPolicyTo reset stats
-
init
public void init(TP transport)
Description copied from interface:MessageProcessingPolicyCalled after creation. Implementations may want to cache the transport reference to get access to thread pools, message counters etc- Specified by:
initin interfaceMessageProcessingPolicy- Overrides:
initin classSubmitToThreadPool
-
destroy
public void destroy()
Description copied from interface:MessageProcessingPolicyCalled before the transport is stopped
-
loopback
public boolean loopback(Message msg, boolean oob)
Description copied from interface:MessageProcessingPolicyProcess a message that was not received from the transport but from above (e.g. the channel or a protocol), and needs to be looped back up because (1) the destination address is null (every multicast message is looped back) or (2) the destination address is the sender's address (unicast message to self).
A message that is looped back can bypass cluster name matching.- Specified by:
loopbackin interfaceMessageProcessingPolicy- Overrides:
loopbackin classSubmitToThreadPool- Parameters:
msg- the message to be looped back up the stack.oob- true if the message is an OOB message- Returns:
-
loopback
public boolean loopback(MessageBatch batch, boolean oob)
- Specified by:
loopbackin interfaceMessageProcessingPolicy- Overrides:
loopbackin classSubmitToThreadPool
-
process
public boolean process(Message msg, boolean oob)
Description copied from interface:MessageProcessingPolicyProcess a message received from the transport- Specified by:
processin interfaceMessageProcessingPolicy- Overrides:
processin classSubmitToThreadPool- Parameters:
msg- the messageoob- true if the message is an OOB message- Returns:
-
process
public boolean process(MessageBatch batch, boolean oob)
Description copied from interface:MessageProcessingPolicyProcess a batch received from the transport- Specified by:
processin interfaceMessageProcessingPolicy- Overrides:
processin classSubmitToThreadPool- Parameters:
batch- the batchoob- true if the batch contains only OOB messages- Returns:
-
viewChange
public void viewChange(java.util.List<Address> members)
-
-