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:
  • Field Summary

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

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

    SHUTDOWN_PAYLOAD
  • Constructor Summary

    Constructors
    Constructor
    Description
    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
    Returns true if the param o is a McastMember with the same name
    byte[]
     
    byte[]
    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
    Length of a message obtained by Member.getData(boolean) or Member.getData(boolean, boolean).
    byte[]
     
    byte[]
    Returns the listen host for the ChannelReceiver implementation
     
    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
    Contains information on how long this member has been online.
    int
     
     
    byte[]
     
    int
    Returns the listen port for the ChannelReceiver implementation
    int
    Returns the secure listen port for the ChannelReceiver implementation.
    long
     
    int
    Returns the UDP port that this member is listening to for UDP messages.
    byte[]
    returns a UUID unique for this member over all sessions.
    int
     
    protected void
    inc()
    Increment the message count.
    boolean
     
    boolean
     
    boolean
    The current state of the member
    boolean
    The current state of the member
    void
     
    void
    setCommand(byte[] command)
    Set the command associated with this member.
    void
    setDomain(byte[] domain)
     
    void
    setHost(byte[] host)
     
    void
     
    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)
     
     
    void
     

    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:
    • 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:
    • 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:
    • 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