Class MemberImpl
- java.lang.Object
-
- org.apache.catalina.tribes.membership.MemberImpl
-
- All Implemented Interfaces:
java.io.Externalizable
,java.io.Serializable
,Member
- Direct Known Subclasses:
StaticMember
public class MemberImpl extends java.lang.Object implements Member, java.io.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_COMMANDprotected byte[]
dataPkg
To avoid serialization over and over again, once the local dataPkg has been set, we use that to transmit dataprotected byte[]
domain
Domain if we want to filter based on domain.protected byte[]
host
The listen host for this memberprotected java.lang.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 timeprotected java.util.concurrent.atomic.AtomicInteger
msgCount
Counter for how many broadcast messages have been sent from this memberprotected 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 memberprotected int
securePort
The tcp/SSL listen port for this memberprotected long
serviceStartTime
For the local member onlyprotected static StringManager
sm
static byte[]
TRIBES_MBR_BEGIN
static byte[]
TRIBES_MBR_END
protected int
udpPort
The udp listen port for this memberprotected 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 serializationMemberImpl(java.lang.String host, int port, long aliveTime)
Construct a new member object.MemberImpl(java.lang.String host, int port, long aliveTime, byte[] payload)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.lang.String
bToS(byte[] data)
static java.lang.String
bToS(byte[] data, int max)
boolean
equals(java.lang.Object o)
Returns true if the param o is a McastMember with the same namebyte[]
getCommand()
returns the command associated with this memberbyte[]
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 databyte[]
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 dataint
getDataLength()
Length of a message obtained byMember.getData(boolean)
orMember.getData(boolean, boolean)
.byte[]
getDomain()
Domain for this clusterbyte[]
getHost()
Return the TCP listen host for this memberjava.lang.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()
java.lang.String
getName()
Return the name of this objectbyte[]
getPayload()
returns the payload associated with this memberint
getPort()
Return the listen port of this memberint
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 memberboolean
isSuspect()
The current state of the membervoid
readExternal(java.io.ObjectInput in)
void
setCommand(byte[] command)
void
setDomain(byte[] domain)
void
setHost(byte[] host)
void
setHostname(java.lang.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)
java.lang.String
toString()
String representation of this objectvoid
writeExternal(java.io.ObjectOutput out)
-
-
-
Field Detail
-
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 java.lang.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 java.util.concurrent.atomic.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 Detail
-
MemberImpl
public MemberImpl()
Empty constructor for serialization
-
MemberImpl
public MemberImpl(java.lang.String host, int port, long aliveTime) throws java.io.IOException
Construct a new member object.- Parameters:
host
- - the tcp listen hostport
- - the tcp listen portaliveTime
- - the number of milliseconds since this member was created- Throws:
java.io.IOException
- If there is an error converting the host name to an IP address
-
MemberImpl
public MemberImpl(java.lang.String host, int port, long aliveTime, byte[] payload) throws java.io.IOException
- Throws:
java.io.IOException
-
-
Method Detail
-
isReady
public boolean isReady()
Description copied from interface:Member
The current state of the member
-
isSuspect
public boolean isSuspect()
Description copied from interface:Member
The current state of the member
-
isFailing
public boolean isFailing()
-
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
-
getDataLength
public int getDataLength()
Description copied from interface:Member
Length of a message obtained byMember.getData(boolean)
orMember.getData(boolean, boolean)
.- Specified by:
getDataLength
in interfaceMember
- 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
-
getMember
public static Member getMember(byte[] data, MemberImpl member)
Deserializes a member from data sent over the wire.- Parameters:
data
- The bytes receivedmember
- 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 java.lang.String getName()
Return the name of this object
-
getPort
public int getPort()
Return the listen port of this member- Specified by:
getPort
in interfaceMember
- Returns:
- - tcp listen port
- See Also:
ChannelReceiver
-
getHost
public byte[] getHost()
Return the TCP listen host for this member- Specified by:
getHost
in interfaceMember
- Returns:
- IP address or host name
- See Also:
ChannelReceiver
-
getHostname
public java.lang.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 interfaceMember
- 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 interfaceMember
- Returns:
- byte[]
-
getPayload
public byte[] getPayload()
Description copied from interface:Member
returns the payload associated with this member- Specified by:
getPayload
in interfaceMember
- Returns:
- byte[]
-
getCommand
public byte[] getCommand()
Description copied from interface:Member
returns the command associated with this member- Specified by:
getCommand
in interfaceMember
- Returns:
- byte[]
-
getDomain
public byte[] getDomain()
Description copied from interface:Member
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 interfaceMember
- 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 interfaceMember
- 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 interfaceMember
-
toString
public java.lang.String toString()
String representation of this object- Overrides:
toString
in classjava.lang.Object
-
bToS
public static java.lang.String bToS(byte[] data)
-
bToS
public static java.lang.String bToS(byte[] data, int max)
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- The hash code
- See Also:
Object.hashCode()
-
equals
public boolean equals(java.lang.Object o)
Returns true if the param o is a McastMember with the same name- Overrides:
equals
in classjava.lang.Object
- Parameters:
o
- The object to test for equality
-
setHost
public void setHost(byte[] host)
-
setHostname
public void setHostname(java.lang.String host) throws java.io.IOException
- Throws:
java.io.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 interfaceMember
-
setCommand
public void setCommand(byte[] command)
- Specified by:
setCommand
in interfaceMember
-
setDomain
public void setDomain(byte[] domain)
-
setSecurePort
public void setSecurePort(int securePort)
-
setUdpPort
public void setUdpPort(int port)
-
isLocal
public boolean isLocal()
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
- Specified by:
readExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
- Specified by:
writeExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
-
-