Apache Tomcat 7.0.28

org.apache.catalina.tribes.group.interceptors
Class FragmentationInterceptor

java.lang.Object
  extended by org.apache.catalina.tribes.group.ChannelInterceptorBase
      extended by 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

Nested Class Summary
static class FragmentationInterceptor.FragCollection
           
static class FragmentationInterceptor.FragKey
           
 
Nested classes/interfaces inherited from interface org.apache.catalina.tribes.ChannelInterceptor
ChannelInterceptor.InterceptorEvent
 
Field Summary
protected  boolean deepclone
           
protected  HashMap<FragmentationInterceptor.FragKey,FragmentationInterceptor.FragCollection> fragpieces
           
 
Fields inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase
optionFlag
 
Constructor Summary
FragmentationInterceptor()
           
 
Method Summary
 void defrag(ChannelMessage msg)
           
 void frag(Member[] destination, ChannelMessage msg, InterceptorPayload payload)
           
 long getExpire()
           
 FragmentationInterceptor.FragCollection getFragCollection(FragmentationInterceptor.FragKey key, ChannelMessage msg)
           
 int getMaxSize()
           
 void heartbeat()
          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.
 void messageReceived(ChannelMessage msg)
          the messageReceived is invoked when a message is received.
 void removeFragCollection(FragmentationInterceptor.FragKey key)
           
 void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)
          The sendMessage method is called when a message is being sent to one more destinations.
 void setExpire(long expire)
           
 void setMaxSize(int maxSize)
           
 
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
 

Field Detail

fragpieces

protected HashMap<FragmentationInterceptor.FragKey,FragmentationInterceptor.FragCollection> fragpieces

deepclone

protected boolean deepclone
Constructor Detail

FragmentationInterceptor

public FragmentationInterceptor()
Method Detail

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 message
msg - ChannelMessage - the message to be sent
payload - 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)

Apache Tomcat 7.0.28

Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.