Package org.jgroups.protocols
Class BaseBundler
- java.lang.Object
-
- org.jgroups.protocols.BaseBundler
-
- All Implemented Interfaces:
Bundler
- Direct Known Subclasses:
RemoveQueueBundler,RingBufferBundler,RingBufferBundlerLockless,RingBufferBundlerLockless2,SenderSendsBundler,TransferQueueBundler
public abstract class BaseBundler extends java.lang.Object implements Bundler
Implements storing of messages in a hashmap and sending of single messages and message batches. Most bundler implementations will want to extend this class- Since:
- 4.0
-
-
Field Summary
Fields Modifier and Type Field Description protected intcapacityprotected longcountprotected java.util.concurrent.locks.ReentrantLocklockprotected Loglogprotected intmax_sizeMaximum number of bytes for messages to be queued until they are sent.protected java.util.Map<Address,java.util.List<Message>>msgsKeys are destinations, values are lists of Messagesprotected ByteArrayDataOutputStreamoutputprotected TPtransport
-
Constructor Summary
Constructors Constructor Description BaseBundler()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddMessage(Message msg, int size)intgetCapacity()If the bundler implementation supports a capacity (e.g.intgetMaxSize()Maximum number of bytes for messages to be queued until they are sentintgetQueueSize()If the bundler has a queue and it should be managed by a queuing discipline (like Random Early Detection), then return the number of elements in the queue, else -1.voidinit(TP transport)Called after creation of the bundlervoidsend(Message msg)protected voidsendBundledMessages()Sends all messages in the map.protected voidsendMessageList(Address dest, Address src, java.util.List<Message> list)protected voidsendSingleMessage(Message msg)BundlersetCapacity(int c)BundlersetMaxSize(int s)intsize()Returns the total number of messages in the hashmapvoidstart()Called afterBundler.init(TP)voidstop()voidviewChange(View view)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.jgroups.protocols.Bundler
resetStats
-
-
-
-
Field Detail
-
msgs
protected final java.util.Map<Address,java.util.List<Message>> msgs
Keys are destinations, values are lists of Messages
-
transport
protected TP transport
-
lock
protected final java.util.concurrent.locks.ReentrantLock lock
-
count
protected long count
-
output
protected ByteArrayDataOutputStream output
-
log
protected Log log
-
max_size
protected int max_size
Maximum number of bytes for messages to be queued until they are sent. This value needs to be smaller than the largest datagram packet size in case of UDP
-
capacity
protected int capacity
-
-
Method Detail
-
getCapacity
public int getCapacity()
Description copied from interface:BundlerIf the bundler implementation supports a capacity (e.g.RingBufferBundler, then return it, else return -1- Specified by:
getCapacityin interfaceBundler
-
setCapacity
public Bundler setCapacity(int c)
-
getMaxSize
public int getMaxSize()
Description copied from interface:BundlerMaximum number of bytes for messages to be queued until they are sent- Specified by:
getMaxSizein interfaceBundler
-
setMaxSize
public Bundler setMaxSize(int s)
- Specified by:
setMaxSizein interfaceBundler
-
init
public void init(TP transport)
Description copied from interface:BundlerCalled after creation of the bundler
-
start
public void start()
Description copied from interface:BundlerCalled afterBundler.init(TP)
-
send
public void send(Message msg) throws java.lang.Exception
-
viewChange
public void viewChange(View view)
- Specified by:
viewChangein interfaceBundler
-
size
public int size()
Returns the total number of messages in the hashmap
-
getQueueSize
public int getQueueSize()
Description copied from interface:BundlerIf the bundler has a queue and it should be managed by a queuing discipline (like Random Early Detection), then return the number of elements in the queue, else -1. In the latter case, the queue won't be managed.
This method needs to be fast as it might get called on every message to be sent.- Specified by:
getQueueSizein interfaceBundler
-
sendBundledMessages
protected void sendBundledMessages()
Sends all messages in the map. Messages for the same destination are bundled into a message list. The map will be cleared when done.
-
sendSingleMessage
protected void sendSingleMessage(Message msg)
-
sendMessageList
protected void sendMessageList(Address dest, Address src, java.util.List<Message> list)
-
addMessage
protected void addMessage(Message msg, int size)
-
-