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, FragmentationInterceptorMBean, Heartbeat, MembershipListener

      public class FragmentationInterceptor
      extends ChannelInterceptorBase
      implements FragmentationInterceptorMBean

  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
  FragmentationInterceptor.expire=<milliseconds> - how long do we keep the fragments in memory and wait for the rest to arrive default=60,000ms -> 60seconds This setting is useful to avoid OutOfMemoryErrors
  FragmentationInterceptor.maxSize=<max message size> - message size in bytes default=1024*100 (around a tenth of a MB)
  Version:
    1.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `FragmentationInterceptor.FragCollection`
    `static class` | `FragmentationInterceptor.FragKey`

    - ### Nested classes/interfaces inherited from interface org.apache.catalina.tribes.ChannelInterceptor

      `ChannelInterceptor.InterceptorEvent`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean` | `deepclone`
    `protected HashMap<FragmentationInterceptor.FragKey,FragmentationInterceptor.FragCollection>` | `fragpieces`
    `protected static StringManager` | `sm`

    - ### Fields inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase

      `optionFlag`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FragmentationInterceptor()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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

      `fireInterceptorEvent, getChannel, getLocalMember, getMember, getMembers, getNext, getOptionFlag, getPrevious, hasMembers, memberAdded, memberDisappeared, okToProcess, setChannel, 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

    - #### sm

          protected static final StringManager sm

    - #### fragpieces

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

    - #### deepclone

          protected final boolean deepclone

      See Also:
        Constant Field Values

  - ### 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` - if a serialization error happens.
      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()

      Specified by:
        `getMaxSize` in interface `FragmentationInterceptorMBean`

    - #### getExpire

          public long getExpire()

      Specified by:
        `getExpire` in interface `FragmentationInterceptorMBean`

    - #### setMaxSize

          public void setMaxSize(int maxSize)

      Specified by:
        `setMaxSize` in interface `FragmentationInterceptorMBean`

    - #### setExpire

          public void setExpire(long expire)

      Specified by:
        `setExpire` in interface `FragmentationInterceptorMBean`

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