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 Details

    • TRIBES_MBR_BEGIN

      public static final byte[] TRIBES_MBR_BEGIN
    • TRIBES_MBR_END

      public static final 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 it's 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 milliseconds 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 it's not listening to a secure port.
      Specified by:
      getSecurePort in interface Member
      Returns:
      the listen port for this member, -1 if it's 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 it's 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