org.apache.catalina.tribes.membership

## Class McastService

- java.lang.Object
- - org.apache.catalina.tribes.membership.McastService

All Implemented Interfaces:
  MembershipListener, MembershipService, MessageListener

    public class McastService
    extends Object
    implements MembershipService, MembershipListener, MessageListener

A membership implementation using simple multicast. This is the representation of a multicast membership service. This class is responsible for maintaining a list of active cluster nodes in the cluster. If a node fails to send out a heartbeat, the node will be dismissed.

Author:
  Filip Hanik

### Field Summary

Fields
`protected byte[]` `domain`
`protected static Member[]` `EMPTY_MEMBERS` Return all the members
`protected McastServiceImpl` `impl` A handle to the actual low level implementation
`protected MembershipListener` `listener` A membership listener delegate (should be the cluster :)
`protected MemberImpl` `localMember` The local member
`protected MessageListener` `msglistener` A message listener delegate for broadcasts
`protected byte[]` `payload`
`protected Properties` `properties` The implementation specific properties
`protected static StringManager` `sm` The string manager for this package.

### Fields inherited from interface org.apache.catalina.tribes.MembershipService

`MBR_RX, MBR_TX`

### Constructor Summary

Constructors
Constructor and Description
`McastService()` Create a membership service.

### Method Summary

Methods
`boolean` `accept(ChannelMessage msg)`
`void` `broadcast(ChannelMessage message)` Broadcasts a message to all members
`Member` `findMemberByName(String name)` Return the member by name
`String` `getAddress()`
`String` `getBind()`
`byte[]` `getDomain()`
`long` `getDropTime()`
`long` `getFrequency()`
`String` `getInfo()` Return descriptive information about this implementation and the corresponding version number, in the format `<description>/<version>`.
`boolean` `getLocalLoopbackDisabled(boolean localLoopbackDisabled)`
`Member` `getLocalMember(boolean alive)` Return the local member
`String` `getLocalMemberName()` Return the local member name
`String` `getMcastAddr()` Deprecated. use getAddress
`String` `getMcastBindAddress()` Deprecated. use getBind
`long` `getMcastDropTime()` Deprecated. use getDropTime
`long` `getMcastFrequency()` Deprecated. use getFrequency
`int` `getMcastPort()` Deprecated. use getPort()
`int` `getMcastSoTimeout()` Deprecated. use getSoTimeout
`int` `getMcastTTL()` Deprecated. use getTtl
`Member` `getMember(Member mbr)`
`Member[]` `getMembers()` Returns a list of all the members in the cluster.
`String[]` `getMembersByName()` Return all the members by name
`byte[]` `getPayload()`
`int` `getPort()`
`Properties` `getProperties()` Return the properties, see setProperties
`int` `getRecoveryCounter()`
`boolean` `getRecoveryEnabled()`
`long` `getRecoverySleepTime()`
`int` `getSoTimeout()`
`int` `getTtl()`
`boolean` `hasMembers()` has members?
`protected void` `hasProperty(Properties properties, String name)` Check if a required property is available.
`static void` `main(String[] args)` Simple test program
`void` `memberAdded(Member member)` A member was added to the group
`void` `memberDisappeared(Member member)` Callback from the impl when a new member has been received
`void` `messageReceived(ChannelMessage msg)` Receive a message from the IO components in the Channel stack
`void` `removeMembershipListener()` Remove the membership listener
`void` `removeMessageListener()`
`void` `setAddress(String addr)`
`void` `setBind(String bindaddr)`
`void` `setDomain(byte[] domain)`
`void` `setDomain(String domain)`
`void` `setDropTime(long time)`
`void` `setFrequency(long time)`
`void` `setLocalLoopbackDisabled(boolean localLoopbackDisabled)`
`void` `setLocalMemberProperties(String listenHost, int listenPort, int securePort, int udpPort)` Sets the local member properties for broadcasting
`void` `setMcastAddr(String addr)` Deprecated. use setAddress
`void` `setMcastBindAddress(String bindaddr)`
`void` `setMcastDropTime(long time)`
`void` `setMcastFrequency(long time)` Deprecated. use setFrequency
`void` `setMcastPort(int port)` Deprecated. use setPort
`void` `setMcastSoTimeout(int mcastSoTimeout)` Deprecated. use setSoTimeout
`void` `setMcastTTL(int mcastTTL)` Deprecated. use setTtl
`void` `setMembershipListener(MembershipListener listener)` Add a membership listener, this version only supports one listener per service, so calling this method twice will result in only the second listener being active.
`void` `setMessageListener(MessageListener listener)`
`void` `setPayload(byte[] payload)` Set a payload to be broadcasted with each membership broadcast.
`void` `setPort(int port)`
`void` `setProperties(Properties properties)` Sets the properties for the membership service.
`void` `setRecoveryCounter(int recoveryCounter)`
`void` `setRecoveryEnabled(boolean recoveryEnabled)`
`void` `setRecoverySleepTime(long recoverySleepTime)`
`void` `setSoTimeout(int mcastSoTimeout)`
`void` `setTtl(int mcastTTL)`
`void` `start()` Start broadcasting and listening to membership pings
`void` `start(int level)` Starts the membership service.
`void` `stop(int svc)` Stop broadcasting and listening to membership pings

### Methods inherited from class java.lang.Object

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

### Methods inherited from interface org.apache.catalina.tribes.MessageListener

`equals, hashCode`

### Field Detail

#### sm

    protected static final StringManager sm

The string manager for this package.

#### properties

    protected Properties properties

The implementation specific properties

#### impl

    protected McastServiceImpl impl

A handle to the actual low level implementation

#### listener

    protected MembershipListener listener

A membership listener delegate (should be the cluster :)

#### msglistener

    protected MessageListener msglistener

A message listener delegate for broadcasts

#### localMember

    protected MemberImpl localMember

The local member

#### payload

    protected byte[] payload

#### domain

    protected byte[] domain

#### EMPTY_MEMBERS

    protected static final Member[] EMPTY_MEMBERS

Return all the members

### Constructor Detail

#### McastService

    public McastService()

Create a membership service.

### Method Detail

#### getInfo

    public String getInfo()

Return descriptive information about this implementation and the corresponding version number, in the format `<description>/<version>`.

#### setProperties

    public void setProperties(Properties properties)

Description copied from interface: `MembershipService`
Sets the properties for the membership service. This must be called before the `start()` method is called. The properties are implementation specific.

Specified by:
  `setProperties` in interface `MembershipService`
Parameters:
  `properties` -
  All are required
  1. mcastPort - the port to listen to
  2. mcastAddress - the mcast group address
  4. bindAddress - the bind address if any - only one that can be null
  5. memberDropTime - the time a member is gone before it is considered gone.
  6. mcastFrequency - the frequency of sending messages
  7. tcpListenPort - the port this member listens to
  8. tcpListenHost - the bind address of this member
Throws:
  `IllegalArgumentException` - if a property is missing.

#### getProperties

    public Properties getProperties()

Return the properties, see setProperties

Specified by:
  `getProperties` in interface `MembershipService`

#### getLocalMemberName

    public String getLocalMemberName()

Return the local member name

#### getLocalMember

    public Member getLocalMember(boolean alive)

Return the local member

Specified by:
  `getLocalMember` in interface `MembershipService`

#### setLocalMemberProperties

    public void setLocalMemberProperties(String listenHost,
                                int listenPort,
                                int securePort,
                                int udpPort)

Sets the local member properties for broadcasting

Specified by:
  `setLocalMemberProperties` in interface `MembershipService`

#### setAddress

    public void setAddress(String addr)

#### setMcastAddr

    @Deprecated
    public void setMcastAddr(String addr)

Deprecated. use setAddress

Parameters:
  `addr` - String

#### getAddress

    public String getAddress()

#### getMcastAddr

    @Deprecated
    public String getMcastAddr()

Deprecated. use getAddress

Returns:
  String

#### setMcastBindAddress

    public void setMcastBindAddress(String bindaddr)

#### setBind

    public void setBind(String bindaddr)

#### getMcastBindAddress

    @Deprecated
    public String getMcastBindAddress()

Deprecated. use getBind

Returns:
  String

#### getBind

    public String getBind()

#### setMcastPort

    @Deprecated
    public void setMcastPort(int port)

Deprecated. use setPort

Parameters:
  `port` - int

#### setPort

    public void setPort(int port)

#### setRecoveryCounter

    public void setRecoveryCounter(int recoveryCounter)

#### getRecoveryCounter

    public int getRecoveryCounter()

#### setRecoveryEnabled

    public void setRecoveryEnabled(boolean recoveryEnabled)

#### getRecoveryEnabled

    public boolean getRecoveryEnabled()

#### setRecoverySleepTime

    public void setRecoverySleepTime(long recoverySleepTime)

#### getRecoverySleepTime

    public long getRecoverySleepTime()

#### setLocalLoopbackDisabled

    public void setLocalLoopbackDisabled(boolean localLoopbackDisabled)

#### getLocalLoopbackDisabled

    public boolean getLocalLoopbackDisabled(boolean localLoopbackDisabled)

#### getMcastPort

    @Deprecated
    public int getMcastPort()

Deprecated. use getPort()

Returns:
  int

#### getPort

    public int getPort()

#### setMcastFrequency

    @Deprecated
    public void setMcastFrequency(long time)

Deprecated. use setFrequency

Parameters:
  `time` - long

#### setFrequency

    public void setFrequency(long time)

#### getMcastFrequency

    @Deprecated
    public long getMcastFrequency()

Deprecated. use getFrequency

Returns:
  long

#### getFrequency

    public long getFrequency()

#### setMcastDropTime

    public void setMcastDropTime(long time)

#### setDropTime

    public void setDropTime(long time)

#### getMcastDropTime

    @Deprecated
    public long getMcastDropTime()

Deprecated. use getDropTime

Returns:
  long

#### getDropTime

    public long getDropTime()

#### hasProperty

    protected void hasProperty(Properties properties,
                   String name)

Check if a required property is available.

Parameters:
  `properties` - The set of properties
  `name` - The property to check for

#### start

    public void start()
               throws Exception

Start broadcasting and listening to membership pings

Specified by:
  `start` in interface `MembershipService`
Throws:
  `Exception` - if a IO error occurs

#### start

    public void start(int level)
               throws Exception

Description copied from interface: `MembershipService`
Starts the membership service. If a membership listeners is added the listener will start to receive membership events.

Specified by:
  `start` in interface `MembershipService`
Parameters:
  `level` - - level MBR_RX starts listening for members, level MBR_TX starts broad casting the server
Throws:
  `Exception` - if the service fails to start.
  `IllegalArgumentException` - if the level is incorrect.

#### stop

    public void stop(int svc)

Stop broadcasting and listening to membership pings

Specified by:
  `stop` in interface `MembershipService`
Parameters:
  `svc` - - level MBR_RX stops listening for members, level MBR_TX stops broad casting the server

#### getMembersByName

    public String[] getMembersByName()

Return all the members by name

Specified by:
  `getMembersByName` in interface `MembershipService`

#### findMemberByName

    public Member findMemberByName(String name)

Return the member by name

Specified by:
  `findMemberByName` in interface `MembershipService`

#### hasMembers

    public boolean hasMembers()

has members?

Specified by:
  `hasMembers` in interface `MembershipService`
Returns:
  true if the the group contains members

#### getMember

    public Member getMember(Member mbr)

Specified by:
  `getMember` in interface `MembershipService`
Parameters:
  `mbr` - Member
Returns:
  Member

#### getMembers

    public Member[] getMembers()

Description copied from interface: `MembershipService`
Returns a list of all the members in the cluster.

Specified by:
  `getMembers` in interface `MembershipService`

#### setMembershipListener

    public void setMembershipListener(MembershipListener listener)

Add a membership listener, this version only supports one listener per service, so calling this method twice will result in only the second listener being active.

Specified by:
  `setMembershipListener` in interface `MembershipService`
Parameters:
  `listener` - The listener

#### setMessageListener

    public void setMessageListener(MessageListener listener)

#### removeMessageListener

    public void removeMessageListener()

#### removeMembershipListener

    public void removeMembershipListener()

Remove the membership listener

Specified by:
  `removeMembershipListener` in interface `MembershipService`

#### memberAdded

    public void memberAdded(Member member)

Description copied from interface: `MembershipListener`
A member was added to the group

Specified by:
  `memberAdded` in interface `MembershipListener`
Parameters:
  `member` - Member - the member that was added

#### memberDisappeared

    public void memberDisappeared(Member member)

Callback from the impl when a new member has been received

Specified by:
  `memberDisappeared` in interface `MembershipListener`
Parameters:
  `member` - The member
See Also:
  `Member.SHUTDOWN_PAYLOAD`

#### messageReceived

    public void messageReceived(ChannelMessage msg)

Description copied from interface: `MessageListener`
Receive a message from the IO components in the Channel stack

Specified by:
  `messageReceived` in interface `MessageListener`
Parameters:
  `msg` - ChannelMessage

#### accept

    public boolean accept(ChannelMessage msg)

Specified by:
  `accept` in interface `MessageListener`

#### broadcast

    public void broadcast(ChannelMessage message)
                   throws ChannelException

Description copied from interface: `MembershipService`
Broadcasts a message to all members

Specified by:
  `broadcast` in interface `MembershipService`
Throws:
  `ChannelException`

#### getMcastSoTimeout

    @Deprecated
    public int getMcastSoTimeout()

Deprecated. use getSoTimeout

Returns:
  int

#### getSoTimeout

    public int getSoTimeout()

#### setMcastSoTimeout

    @Deprecated
    public void setMcastSoTimeout(int mcastSoTimeout)

Deprecated. use setSoTimeout

Parameters:
  `mcastSoTimeout` - int

#### setSoTimeout

    public void setSoTimeout(int mcastSoTimeout)

#### getMcastTTL

    @Deprecated
    public int getMcastTTL()

Deprecated. use getTtl

Returns:
  int

#### getTtl

    public int getTtl()

#### getPayload

    public byte[] getPayload()

#### getDomain

    public byte[] getDomain()

#### setMcastTTL

    @Deprecated
    public void setMcastTTL(int mcastTTL)

Deprecated. use setTtl

Parameters:
  `mcastTTL` - int

#### setTtl

    public void setTtl(int mcastTTL)

#### setPayload

    public void setPayload(byte[] payload)

Description copied from interface: `MembershipService`
Set a payload to be broadcasted with each membership broadcast.

Specified by:
  `setPayload` in interface `MembershipService`
Parameters:
  `payload` - byte[]

#### setDomain

    public void setDomain(byte[] domain)

Specified by:
  `setDomain` in interface `MembershipService`

#### setDomain

    public void setDomain(String domain)

#### main

    public static void main(String[] args)
                     throws Exception

Simple test program

Parameters:
  `args` - Command-line arguments
Throws:
  `Exception` - If an error occurs