TcpPingInterceptor (Apache Tomcat 9.0.120 API Documentation)
Description: declaration: package: org.apache.catalina.tribes.group.interceptors, class: TcpPingInterceptor

# Class TcpPingInterceptor

java.lang.Object
org.apache.catalina.tribes.group.ChannelInterceptorBase
org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor

All Implemented Interfaces:
  `ChannelInterceptor, TcpPingInterceptorMBean, Heartbeat, MembershipListener`

public class TcpPingInterceptor extends ChannelInterceptorBase implements TcpPingInterceptorMBean
Sends periodic TCP pings to cluster members for health monitoring.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `protected class`
  `TcpPingInterceptor.PingThread`
  Background thread that sends periodic pings.

  ### Nested classes/interfaces inherited from interface ChannelInterceptor

  `ChannelInterceptor.InterceptorEvent`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static final AtomicInteger`
  `cnt`
  Counter for naming ping threads.
  `protected long`
  `interval`
  Ping interval in milliseconds.
  `protected boolean`
  `running`
  Whether the ping thread is currently running.
  `protected static final StringManager`
  `sm`
  The string manager for this package.
  `protected boolean`
  `staticOnly`
  Whether to ping only static members.
  `protected static final byte[]`
  `TCP_PING_DATA`
  Test payload sent during ping checks.
  `protected TcpPingInterceptor.PingThread`
  `thread`
  The background ping thread.
  `protected boolean`
  `useThread`
  Whether to use a dedicated thread for pinging.

  ### Fields inherited from class ChannelInterceptorBase

  `optionFlag`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TcpPingInterceptor()`
  Constructs a new TcpPingInterceptor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `long`
  `getInterval()`
  Returns the ping interval in milliseconds.
  `boolean`
  `getStaticOnly()`
  Returns whether static-only mode is enabled.
  `boolean`
  `getUseThread()`
  Returns whether a dedicated ping thread is used.
  `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.
  `protected void`
  `sendPing()`
  Sends a ping to cluster members.
  `protected void`
  `sendPingMessage(Member[] members)`
  Sends a ping message to the specified members.
  `void`
  `setInterval(long interval)`
  Sets the ping interval in milliseconds.
  `void`
  `setStaticOnly(boolean staticOnly)`
  Sets whether to ping only static members.
  `void`
  `setUseThread(boolean useThread)`
  Sets whether to use a dedicated thread for pinging.
  `void`
  `start(int svc)`
  Starts up the channel.
  `void`
  `stop(int svc)`
  Shuts down the channel.

  ### Methods inherited from class ChannelInterceptorBase

  `fireInterceptorEvent, getChannel, getLocalMember, getMember, getMembers, getNext, getOptionFlag, getPrevious, hasMembers, memberAdded, memberDisappeared, okToProcess, sendMessage, setChannel, setNext, setOptionFlag, setPrevious`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface TcpPingInterceptorMBean

  `getOptionFlag`

- ## Field Details

  - ### sm

    protected static final StringManager sm
    The string manager for this package.

  - ### TCP_PING_DATA

    protected static final byte[] TCP_PING_DATA
    Test payload sent during ping checks.

  - ### interval

    protected long interval
    Ping interval in milliseconds.

  - ### useThread

    protected boolean useThread
    Whether to use a dedicated thread for pinging.

  - ### staticOnly

    protected boolean staticOnly
    Whether to ping only static members.

  - ### running

    protected volatile boolean running
    Whether the ping thread is currently running.

  - ### thread

    protected TcpPingInterceptor.PingThread thread
    The background ping thread.

  - ### cnt

    protected static final AtomicInteger cnt
    Counter for naming ping threads.

- ## Constructor Details

  - ### TcpPingInterceptor

    public TcpPingInterceptor()
    Constructs a new TcpPingInterceptor.

- ## Method Details

  - ### start

    public void start(int svc) throws ChannelException
    Description copied from interface: `ChannelInterceptor`
    Starts up the channel. This can be called multiple times for individual services to start The svc parameter can be the logical or value of any constants
    Specified by:
      `start` in interface `ChannelInterceptor`
    Overrides:
      `start` in class `ChannelInterceptorBase`
    Parameters:
      `svc` - one of:
      - Channel.DEFAULT - will start all services
      - Channel.MBR_RX_SEQ - starts the membership receiver
      - Channel.MBR_TX_SEQ - starts the membership broadcaster
      - Channel.SND_TX_SEQ - starts the replication transmitter
      - Channel.SND_RX_SEQ - starts the replication receiver
    Throws:
      `ChannelException` - if a startup error occurs or the service is already started.
    See Also:
      - `Channel`

  - ### stop

    public void stop(int svc) throws ChannelException
    Description copied from interface: `ChannelInterceptor`
    Shuts down the channel. This can be called multiple times for individual services to shut down. The svc parameter can be the logical or value of any constants
    Specified by:
      `stop` in interface `ChannelInterceptor`
    Overrides:
      `stop` in class `ChannelInterceptorBase`
    Parameters:
      `svc` - one of:
      - Channel.DEFAULT - will shut down all services
      - Channel.MBR_RX_SEQ - stops the membership receiver
      - Channel.MBR_TX_SEQ - stops the membership broadcaster
      - Channel.SND_TX_SEQ - stops the replication transmitter
      - Channel.SND_RX_SEQ - stops the replication receiver
    Throws:
      `ChannelException` - if a startup error occurs or the service is already started.
    See Also:
      - `Channel`

  - ### 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`

  - ### getInterval

    public long getInterval()
    Description copied from interface: `TcpPingInterceptorMBean`
    Returns the ping interval in milliseconds.
    Specified by:
      `getInterval` in interface `TcpPingInterceptorMBean`
    Returns:
      the ping interval

  - ### setInterval

    public void setInterval(long interval)
    Sets the ping interval in milliseconds.
    Parameters:
      `interval` - the interval in milliseconds

  - ### setUseThread

    public void setUseThread(boolean useThread)
    Sets whether to use a dedicated thread for pinging.
    Parameters:
      `useThread` - true to use a dedicated thread

  - ### setStaticOnly

    public void setStaticOnly(boolean staticOnly)
    Sets whether to ping only static members.
    Parameters:
      `staticOnly` - true to ping only static members

  - ### getUseThread

    public boolean getUseThread()
    Description copied from interface: `TcpPingInterceptorMBean`
    Returns whether a dedicated ping thread is used.
    Specified by:
      `getUseThread` in interface `TcpPingInterceptorMBean`
    Returns:
      true if a dedicated thread is used

  - ### getStaticOnly

    public boolean getStaticOnly()
    Returns whether static-only mode is enabled.
    Returns:
      true if only static members are pinged

  - ### sendPing

    protected void sendPing()
    Sends a ping to cluster members.

  - ### sendPingMessage

    protected void sendPingMessage(Member[] members)
    Sends a ping message to the specified members.
    Parameters:
      `members` - the members to ping

  - ### 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