org.apache.catalina.tribes.group.interceptors
Class FragmentationInterceptor
java.lang.Object
org.apache.catalina.tribes.group.ChannelInterceptorBase
org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor
- All Implemented Interfaces:
- ChannelInterceptor, Heartbeat, MembershipListener
public class FragmentationInterceptor
- extends ChannelInterceptorBase
The fragmentation interceptor splits up large messages into smaller messages and assembles them on the other end.
This is very useful when you don't want large messages hogging the sending sockets
and smaller messages can make it through.
Configuration Options
OrderInteceptor.expire= - how long do we keep the fragments in memory and wait for the rest to arrivedefault=60,000ms -> 60seconds
This setting is useful to avoid OutOfMemoryErrors
OrderInteceptor.maxSize= - message size in bytes default=1024*100 (around a tenth of a MB)
- Version:
- 1.0
- Author:
- Filip Hanik
Methods inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase |
accept, fireInterceptorEvent, getLocalMember, getMember, getMembers, getNext, getOptionFlag, getPrevious, hasMembers, memberAdded, memberDisappeared, okToProcess, setNext, setOptionFlag, setPrevious, start, stop |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
fragpieces
protected java.util.HashMap fragpieces
deepclone
protected boolean deepclone
FragmentationInterceptor
public FragmentationInterceptor()
sendMessage
public void sendMessage(Member[] destination,
ChannelMessage msg,
InterceptorPayload payload)
throws ChannelException
- Description copied from interface:
ChannelInterceptor
- The
sendMessage
method is called when a message is being sent to one more destinations.
The interceptor can modify any of the parameters and then pass on the message down the stack by
invoking getNext().sendMessage(destination,msg,payload)
Alternatively the interceptor can stop the message from being sent by not invoking
getNext().sendMessage(destination,msg,payload)
If the message is to be sent asynchronous the application can be notified of completion and
errors by passing in an error handler attached to a payload object.
The ChannelMessage.getAddress contains Channel.getLocalMember, and can be overwritten
to simulate a message sent from another node.
- Specified by:
sendMessage
in interface ChannelInterceptor
- Overrides:
sendMessage
in class ChannelInterceptorBase
- Parameters:
destination
- Member[] - the destination for this messagemsg
- ChannelMessage - the message to be sentpayload
- InterceptorPayload - the payload, carrying an error handler and future useful data, can be null
- Throws:
ChannelException
- See Also:
ErrorHandler
,
InterceptorPayload
messageReceived
public void messageReceived(ChannelMessage msg)
- Description copied from interface:
ChannelInterceptor
- the
messageReceived
is invoked when a message is received.
ChannelMessage.getAddress()
is the sender, or the reply-to address
if it has been overwritten.
- Specified by:
messageReceived
in interface ChannelInterceptor
- Overrides:
messageReceived
in class ChannelInterceptorBase
- Parameters:
msg
- ChannelMessage
getFragCollection
public FragmentationInterceptor.FragCollection getFragCollection(FragmentationInterceptor.FragKey key,
ChannelMessage msg)
removeFragCollection
public void removeFragCollection(FragmentationInterceptor.FragKey key)
defrag
public void defrag(ChannelMessage msg)
frag
public void frag(Member[] destination,
ChannelMessage msg,
InterceptorPayload payload)
throws ChannelException
- Throws:
ChannelException
heartbeat
public void heartbeat()
- Description copied from interface:
ChannelInterceptor
- The
heartbeat()
method gets invoked periodically
to allow interceptors to clean up resources, time out object and
perform actions that are unrelated to sending/receiving data.
- Specified by:
heartbeat
in interface ChannelInterceptor
- Specified by:
heartbeat
in interface Heartbeat
- Overrides:
heartbeat
in class ChannelInterceptorBase
getMaxSize
public int getMaxSize()
getExpire
public long getExpire()
setMaxSize
public void setMaxSize(int maxSize)
setExpire
public void setExpire(long expire)
Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.