Package org.apache.catalina.tribes.membership

# Class MemberImpl

java.lang.Object
org.apache.catalina.tribes.membership.MemberImpl

All Implemented Interfaces:
  `Externalizable`, `Serializable`, `Member`

Direct Known Subclasses:
  `StaticMember`

public class MemberImpl extends Object implements Member, Externalizable
A membership implementation using simple multicast. This is the representation of a multicast member. Carries the host, and port of the this or other cluster nodes.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected byte[]`
  `command`
  Command, so that the custom payload doesn't have to be used This is for internal tribes use, such as SHUTDOWN_COMMAND
  `protected byte[]`
  `dataPkg`
  To avoid serialization over and over again, once the local dataPkg has been set, we use that to transmit data
  `static final boolean`
  `DO_DNS_LOOKUPS`
  Deprecated.
  This will be removed without replacement in Tomact 10 onwards
  `protected byte[]`
  `domain`
  Domain if we want to filter based on domain.
  `protected byte[]`
  `host`
  The listen host for this member
  `protected String`
  `hostname`
  `protected boolean`
  `local`
  The flag indicating that this member is a local member.
  `protected long`
  `memberAliveTime`
  The number of milliseconds since this member was created, is kept track of using the start time
  `protected AtomicInteger`
  `msgCount`
  Counter for how many broadcast messages have been sent from this member
  `protected byte[]`
  `payload`
  Custom payload that an app framework can broadcast Also used to transport stop command.
  `protected int`
  `port`
  The tcp listen port for this member
  `protected int`
  `securePort`
  The tcp/SSL listen port for this member
  `protected long`
  `serviceStartTime`
  For the local member only
  `protected static final StringManager`
  `sm`
  `static final byte[]`
  `TRIBES_MBR_BEGIN`
  `static final byte[]`
  `TRIBES_MBR_END`
  `protected int`
  `udpPort`
  The udp listen port for this member
  `protected byte[]`
  `uniqueId`
  Unique session Id for this member

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

  `SHUTDOWN_PAYLOAD`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MemberImpl()`
  Empty constructor for serialization
  `MemberImpl(String host, int port, long aliveTime)`
  Construct a new member object.
  `MemberImpl(String host, int port, long aliveTime, byte[] payload)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static String`
  `bToS(byte[] data)`
  `static String`
  `bToS(byte[] data, int max)`
  `boolean`
  `equals(Object o)`
  Returns true if the param o is a McastMember with the same name
  `byte[]`
  `getCommand()`
  `byte[]`
  `getData()`
  Create a data package to send over the wire representing this member.
  `byte[]`
  `getData(boolean getalive)`
  Highly optimized version of serializing a member into a byte array Returns a cached byte[] reference, do not modify this data
  `byte[]`
  `getData(boolean getalive, boolean reset)`
  Highly optimized version of serializing a member into a byte array Returns a cached byte[] reference, do not modify this data
  `int`
  `getDataLength()`
  Length of a message obtained by `Member.getData(boolean)` or `Member.getData(boolean, boolean)`.
  `byte[]`
  `getDomain()`
  `byte[]`
  `getHost()`
  Returns the listen host for the ChannelReceiver implementation
  `String`
  `getHostname()`
  `static Member`
  `getMember(byte[] data)`
  `static Member`
  `getMember(byte[] data, int offset, int length)`
  `static Member`
  `getMember(byte[] data, int offset, int length, MemberImpl member)`
  `static Member`
  `getMember(byte[] data, MemberImpl member)`
  Deserializes a member from data sent over the wire.
  `long`
  `getMemberAliveTime()`
  Contains information on how long this member has been online.
  `int`
  `getMsgCount()`
  `String`
  `getName()`
  `byte[]`
  `getPayload()`
  `int`
  `getPort()`
  Returns the listen port for the ChannelReceiver implementation
  `int`
  `getSecurePort()`
  Returns the secure listen port for the ChannelReceiver implementation.
  `long`
  `getServiceStartTime()`
  `int`
  `getUdpPort()`
  Returns the UDP port that this member is listening to for UDP messages.
  `byte[]`
  `getUniqueId()`
  returns a UUID unique for this member over all sessions.
  `int`
  `hashCode()`
  `protected void`
  `inc()`
  Increment the message count.
  `boolean`
  `isFailing()`
  `boolean`
  `isLocal()`
  `boolean`
  `isReady()`
  The current state of the member.
  `boolean`
  `isSuspect()`
  The current state of the member.
  `void`
  `readExternal(ObjectInput in)`
  `void`
  `setCommand(byte[] command)`
  Set the command associated with this member.
  `void`
  `setDomain(byte[] domain)`
  `void`
  `setHost(byte[] host)`
  `void`
  `setHostname(String host)`
  `void`
  `setLocal(boolean local)`
  Set if the member is local.
  `void`
  `setMemberAliveTime(long time)`
  Set the alive time in ms.
  `void`
  `setMsgCount(int msgCount)`
  `void`
  `setPayload(byte[] payload)`
  Set the payload associated with this member.
  `void`
  `setPort(int port)`
  `void`
  `setSecurePort(int securePort)`
  `void`
  `setServiceStartTime(long serviceStartTime)`
  `void`
  `setUdpPort(int port)`
  `void`
  `setUniqueId(byte[] uniqueId)`
  `String`
  `toString()`
  `void`
  `writeExternal(ObjectOutput out)`

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

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### DO_DNS_LOOKUPS

    @Deprecated public static final boolean DO_DNS_LOOKUPS
    Deprecated.
    This will be removed without replacement in Tomact 10 onwards
    Should a call to getName or getHostName try to do a DNS lookup? default is false

  - ### TRIBES_MBR_BEGIN

    public static final transient byte[] TRIBES_MBR_BEGIN

  - ### TRIBES_MBR_END

    public static final transient byte[] TRIBES_MBR_END

  - ### sm

    protected static final StringManager sm

  - ### host

    protected volatile byte[] host
    The listen host for this member

  - ### hostname

    protected transient volatile String hostname

  - ### port

    protected volatile int port
    The tcp listen port for this member

  - ### udpPort

    protected volatile int udpPort
    The udp listen port for this member

  - ### securePort

    protected volatile int securePort
    The tcp/SSL listen port for this member

  - ### msgCount

    protected AtomicInteger msgCount
    Counter for how many broadcast messages have been sent from this member

  - ### memberAliveTime

    protected volatile long memberAliveTime
    The number of milliseconds since this member was created, is kept track of using the start time

  - ### serviceStartTime

    protected transient long serviceStartTime
    For the local member only

  - ### dataPkg

    protected transient byte[] dataPkg
    To avoid serialization over and over again, once the local dataPkg has been set, we use that to transmit data

  - ### uniqueId

    protected volatile byte[] uniqueId
    Unique session Id for this member

  - ### payload

    protected volatile byte[] payload
    Custom payload that an app framework can broadcast Also used to transport stop command.

  - ### command

    protected volatile byte[] command
    Command, so that the custom payload doesn't have to be used This is for internal tribes use, such as SHUTDOWN_COMMAND

  - ### domain

    protected volatile byte[] domain
    Domain if we want to filter based on domain.

  - ### local

    protected volatile boolean local
    The flag indicating that this member is a local member.

- ## Constructor Details

  - ### MemberImpl

    public MemberImpl()
    Empty constructor for serialization

  - ### MemberImpl

    public MemberImpl(String host, int port, long aliveTime) throws IOException
    Construct a new member object.
    Parameters:
      `host` - - the tcp listen host
      `port` - - the tcp listen port
      `aliveTime` - - the number of milliseconds since this member was created
    Throws:
      `IOException` - If there is an error converting the host name to an IP address

  - ### MemberImpl

    public MemberImpl(String host, int port, long aliveTime, byte[] payload) throws IOException
    Throws:
      `IOException`

- ## Method Details

  - ### isReady

    public boolean isReady()
    Description copied from interface: `Member`
    The current state of the member.
    Specified by:
      `isReady` in interface `Member`
    Returns:
      `true` if the member is functioning correctly

  - ### isSuspect

    public boolean isSuspect()
    Description copied from interface: `Member`
    The current state of the member.
    Specified by:
      `isSuspect` in interface `Member`
    Returns:
      `true` if the member is suspect, but the crash has not been confirmed

  - ### isFailing

    public boolean isFailing()
    Specified by:
      `isFailing` in interface `Member`
    Returns:
      `true` if the member has been confirmed to malfunction

  - ### inc

    protected void inc()
    Increment the message count.

  - ### getData

    public byte[] getData()
    Create a data package to send over the wire representing this member. This is faster than serialization.
    Returns:
      - the bytes for this member deserialized

  - ### getData

    public byte[] getData(boolean getalive)
    Description copied from interface: `Member`
    Highly optimized version of serializing a member into a byte array Returns a cached byte[] reference, do not modify this data
    Specified by:
      `getData` in interface `Member`
    Parameters:
      `getalive` - calculate memberAlive time
    Returns:
      the data as a byte array

  - ### getDataLength

    public int getDataLength()
    Description copied from interface: `Member`
    Length of a message obtained by `Member.getData(boolean)` or `Member.getData(boolean, boolean)`.
    Specified by:
      `getDataLength` in interface `Member`
    Returns:
      the data length

  - ### getData

    public byte[] getData(boolean getalive, boolean reset)
    Description copied from interface: `Member`
    Highly optimized version of serializing a member into a byte array Returns a cached byte[] reference, do not modify this data
    Specified by:
      `getData` in interface `Member`
    Parameters:
      `getalive` - calculate memberAlive time
      `reset` - reset the cached data package, and create a new one
    Returns:
      the data as a byte array

  - ### getMember

    public static Member getMember(byte[] data, MemberImpl member)
    Deserializes a member from data sent over the wire.
    Parameters:
      `data` - The bytes received
      `member` - The member object to populate
    Returns:
      The populated member object.

  - ### getMember

    public static Member getMember(byte[] data, int offset, int length, MemberImpl member)

  - ### getMember

    public static Member getMember(byte[] data)

  - ### getMember

    public static Member getMember(byte[] data, int offset, int length)

  - ### getName

    public String getName()
    Specified by:
      `getName` in interface `Member`
    Returns:
      the name of this node, should be unique within the group.

  - ### getPort

    public int getPort()
    Description copied from interface: `Member`
    Returns the listen port for the ChannelReceiver implementation
    Specified by:
      `getPort` in interface `Member`
    Returns:
      the listen port for this member, -1 if its not listening on an insecure port
    See Also:
      - `ChannelReceiver`

  - ### getHost

    public byte[] getHost()
    Description copied from interface: `Member`
    Returns the listen host for the ChannelReceiver implementation
    Specified by:
      `getHost` in interface `Member`
    Returns:
      IPv4 or IPv6 representation of the host address this member listens to incoming data
    See Also:
      - `ChannelReceiver`

  - ### getHostname

    public String getHostname()

  - ### getMsgCount

    public int getMsgCount()

  - ### getMemberAliveTime

    public long getMemberAliveTime()
    Description copied from interface: `Member`
    Contains information on how long this member has been online. The result is the number of milli seconds this member has been broadcasting its membership to the group.
    Specified by:
      `getMemberAliveTime` in interface `Member`
    Returns:
      nr of milliseconds since this member started.

  - ### getServiceStartTime

    public long getServiceStartTime()

  - ### getUniqueId

    public byte[] getUniqueId()
    Description copied from interface: `Member`
    returns a UUID unique for this member over all sessions. If the member crashes and restarts, the uniqueId will be different.
    Specified by:
      `getUniqueId` in interface `Member`
    Returns:
      byte[]

  - ### getPayload

    public byte[] getPayload()
    Specified by:
      `getPayload` in interface `Member`
    Returns:
      the payload associated with this member

  - ### getCommand

    public byte[] getCommand()
    Specified by:
      `getCommand` in interface `Member`
    Returns:
      the command associated with this member

  - ### getDomain

    public byte[] getDomain()
    Specified by:
      `getDomain` in interface `Member`
    Returns:
      the domain for this cluster

  - ### getSecurePort

    public int getSecurePort()
    Description copied from interface: `Member`
    Returns the secure listen port for the ChannelReceiver implementation. Returns -1 if its not listening to a secure port.
    Specified by:
      `getSecurePort` in interface `Member`
    Returns:
      the listen port for this member, -1 if its not listening on a secure port
    See Also:
      - `ChannelReceiver`

  - ### getUdpPort

    public int getUdpPort()
    Description copied from interface: `Member`
    Returns the UDP port that this member is listening to for UDP messages.
    Specified by:
      `getUdpPort` in interface `Member`
    Returns:
      the listen UDP port for this member, -1 if its not listening on a UDP port

  - ### setMemberAliveTime

    public void setMemberAliveTime(long time)
    Description copied from interface: `Member`
    Set the alive time in ms.
    Specified by:
      `setMemberAliveTime` in interface `Member`
    Parameters:
      `time` - the value to set

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### bToS

    public static String bToS(byte[] data)

  - ### bToS

    public static String bToS(byte[] data, int max)

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### equals

    public boolean equals(Object o)
    Returns true if the param o is a McastMember with the same name
    Overrides:
      `equals` in class `Object`
    Parameters:
      `o` - The object to test for equality

  - ### setHost

    public void setHost(byte[] host)

  - ### setHostname

    public void setHostname(String host) throws IOException
    Throws:
      `IOException`

  - ### setMsgCount

    public void setMsgCount(int msgCount)

  - ### setPort

    public void setPort(int port)

  - ### setServiceStartTime

    public void setServiceStartTime(long serviceStartTime)

  - ### setUniqueId

    public void setUniqueId(byte[] uniqueId)

  - ### setPayload

    public void setPayload(byte[] payload)
    Description copied from interface: `Member`
    Set the payload associated with this member.
    Specified by:
      `setPayload` in interface `Member`
    Parameters:
      `payload` - the payload

  - ### setCommand

    public void setCommand(byte[] command)
    Description copied from interface: `Member`
    Set the command associated with this member.
    Specified by:
      `setCommand` in interface `Member`
    Parameters:
      `command` - the command

  - ### setDomain

    public void setDomain(byte[] domain)

  - ### setSecurePort

    public void setSecurePort(int securePort)

  - ### setUdpPort

    public void setUdpPort(int port)

  - ### isLocal

    public boolean isLocal()
    Specified by:
      `isLocal` in interface `Member`
    Returns:
      `true` if the member is local member

  - ### setLocal

    public void setLocal(boolean local)
    Description copied from interface: `Member`
    Set if the member is local.
    Specified by:
      `setLocal` in interface `Member`
    Parameters:
      `local` - set to `true` if this is the local member

  - ### readExternal

    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
    Specified by:
      `readExternal` in interface `Externalizable`
    Throws:
      `IOException`
      `ClassNotFoundException`

  - ### writeExternal

    public void writeExternal(ObjectOutput out) throws IOException
    Specified by:
      `writeExternal` in interface `Externalizable`
    Throws:
      `IOException`