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
  `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()`
  returns the command associated with this member
  `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()`
  Domain for this cluster
  `byte[]`
  `getHost()`
  Return the TCP listen host for this member
  `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()`
  Return the name of this object
  `byte[]`
  `getPayload()`
  returns the payload associated with this member
  `int`
  `getPort()`
  Return the listen port of this member
  `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)`
  `void`
  `setDomain(byte[] domain)`
  `void`
  `setHost(byte[] host)`
  `void`
  `setHostname(String host)`
  `void`
  `setLocal(boolean local)`
  `void`
  `setMemberAliveTime(long time)`
  `void`
  `setMsgCount(int msgCount)`
  `void`
  `setPayload(byte[] payload)`
  `void`
  `setPort(int port)`
  `void`
  `setSecurePort(int securePort)`
  `void`
  `setServiceStartTime(long serviceStartTime)`
  `void`
  `setUdpPort(int port)`
  `void`
  `setUniqueId(byte[] uniqueId)`
  `String`
  `toString()`
  String representation of this object
  `void`
  `writeExternal(ObjectOutput out)`

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

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

- ## Field Details

  - ### 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:
      boolean - 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:
      boolean - true if the member is suspect, but the crash has not been confirmed

  - ### isFailing

    public boolean isFailing()
    Specified by:
      `isFailing` in interface `Member`
    Returns:
      boolean - 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()
    Return the name of this object
    Specified by:
      `getName` in interface `Member`
    Returns:
      a unique name to the cluster

  - ### getPort

    public int getPort()
    Return the listen port of this member
    Specified by:
      `getPort` in interface `Member`
    Returns:
      - tcp listen port
    See Also:
      - `ChannelReceiver`

  - ### getHost

    public byte[] getHost()
    Return the TCP listen host for this member
    Specified by:
      `getHost` in interface `Member`
    Returns:
      IP address or host name
    See Also:
      - `ChannelReceiver`

  - ### getHostname

    public String getHostname()

  - ### getMsgCount

    public int getMsgCount()

  - ### getMemberAliveTime

    public long getMemberAliveTime()
    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 cluster.
    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()
    Description copied from interface: `Member`
    returns the payload associated with this member
    Specified by:
      `getPayload` in interface `Member`
    Returns:
      byte[]

  - ### getCommand

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

  - ### getDomain

    public byte[] getDomain()
    Description copied from interface: `Member`
    Domain for this cluster
    Specified by:
      `getDomain` in interface `Member`
    Returns:
      byte[]

  - ### 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)
    Specified by:
      `setMemberAliveTime` in interface `Member`

  - ### toString

    public String toString()
    String representation of this object
    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`
    Returns:
      The hash code
    See Also:
      - `Object.hashCode()`

  - ### 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)
    Specified by:
      `setPayload` in interface `Member`

  - ### setCommand

    public void setCommand(byte[] command)
    Specified by:
      `setCommand` in interface `Member`

  - ### 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:
      boolean - true if the member is local member

  - ### setLocal

    public void setLocal(boolean local)
    Specified by:
      `setLocal` in interface `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`