org.jgroups.stack
Class LogicalAddress1_4

java.lang.Object
  extended byorg.jgroups.stack.LogicalAddress1_4
All Implemented Interfaces:
Address, java.lang.Cloneable, java.lang.Comparable, java.io.Externalizable, java.io.Serializable

public class LogicalAddress1_4
extends java.lang.Object
implements Address

Logical address that spans the lifetime of a member. Assigned at member (JVM) startup, and retained until member is shutdown. Note that the address does not change on disconnect-connect sequences. For example, when a member is shunned and subsequently readmitted to the group, the member's address (LogicalAddress1_4) remains the same.
An instance of LogicalAddress1_4 is generated by the transport protocol. Currently, only UDP1_4 generates LogicalAddresses.
Note that host, timestamp and id are supposed to make LogicalAddress1_4 as unique as possible. However, there is a remote chance that 2 instances started on the same machine create their address at exactly the same time, resulting in identical addresses (leading to problems). In the future, I will try to make this totally unique, by for example using the PID of the current process (once available though the JDK, or by locking on a common resource (e.g. /dev/random) to serialize creation. However, as for now, chances are you will never experience this problem.

Author:
Bela Ban, Dec 23 2003
See Also:
Serialized Form

Field Summary
protected static int count
           
protected  java.lang.String host
           
protected  int id
           
protected  boolean multicast_addr
           
protected  java.util.ArrayList physical_addrs
          List of physical addresses
protected  long timestamp
           
 
Constructor Summary
LogicalAddress1_4()
           
LogicalAddress1_4(java.lang.String host_name, java.util.List physical_addrs)
          Use this constructor to create an instance, not the null-constructor
 
Method Summary
 void addPhysicalAddress(java.net.SocketAddress addr)
          For internal use only ! Don't use this method !
 java.lang.Object clone()
           
 int compare(LogicalAddress1_4 other)
          Establishes an order between 2 addresses.
 int compareTo(java.lang.Object o)
          implements the java.lang.Comparable interface
 LogicalAddress1_4 copy()
           
 boolean equals(java.lang.Object obj)
           
 byte[] getAdditionalData()
          Returns the additional_data.
 java.lang.String getHost()
           
 long getId()
           
 java.util.ArrayList getPhysicalAddresses()
          Returns a copy of the list of physical addresses.
 java.net.SocketAddress getPrimaryPhysicalAddress()
           
 long getTimestamp()
           
 int hashCode()
           
protected  void init(java.lang.String host_name, java.util.List physical_addrs)
           
 boolean isMulticastAddress()
          Checks whether this is an address that represents multiple destinations, e.g.
 void readExternal(java.io.ObjectInput in)
           
 void removeAllPhysicalAddresses()
          For internal use only ! Don't use this method !
 void removePhysicalAddress(java.net.SocketAddress addr)
          For internal use only ! Don't use this method !
 void setAdditionalData(byte[] additional_data)
          Sets the additional_data.
 void setPrimaryPhysicalAddress(java.net.SocketAddress primary_physical_addr)
           
 java.lang.String toString()
           
 java.lang.String toString(boolean print_details)
           
 void writeExternal(java.io.ObjectOutput out)
           
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

count

protected static int count

host

protected java.lang.String host

timestamp

protected long timestamp

id

protected int id

multicast_addr

protected boolean multicast_addr

physical_addrs

protected java.util.ArrayList physical_addrs
List of physical addresses

Constructor Detail

LogicalAddress1_4

public LogicalAddress1_4()

LogicalAddress1_4

public LogicalAddress1_4(java.lang.String host_name,
                         java.util.List physical_addrs)
Use this constructor to create an instance, not the null-constructor

Method Detail

init

protected void init(java.lang.String host_name,
                    java.util.List physical_addrs)

getHost

public java.lang.String getHost()

getTimestamp

public long getTimestamp()

getId

public long getId()

getPrimaryPhysicalAddress

public java.net.SocketAddress getPrimaryPhysicalAddress()

setPrimaryPhysicalAddress

public void setPrimaryPhysicalAddress(java.net.SocketAddress primary_physical_addr)

getPhysicalAddresses

public java.util.ArrayList getPhysicalAddresses()
Returns a copy of the list of physical addresses. Reason for the copy is that the list is not supposed to be modified (should be immutable).

Returns:
List of physical addresses (return value maybe null)

addPhysicalAddress

public void addPhysicalAddress(java.net.SocketAddress addr)
For internal use only ! Don't use this method !

Parameters:
addr -

removePhysicalAddress

public void removePhysicalAddress(java.net.SocketAddress addr)
For internal use only ! Don't use this method !

Parameters:
addr -

removeAllPhysicalAddresses

public void removeAllPhysicalAddresses()
For internal use only ! Don't use this method !


isMulticastAddress

public boolean isMulticastAddress()
Description copied from interface: Address
Checks whether this is an address that represents multiple destinations, e.g. a class D address in the internet

Specified by:
isMulticastAddress in interface Address
Returns:
true if this is a multicast address, false if it is a unicast address

getAdditionalData

public byte[] getAdditionalData()
Returns the additional_data.

Returns:
byte[]

setAdditionalData

public void setAdditionalData(byte[] additional_data)
Sets the additional_data.

Parameters:
additional_data - The additional_data to set

compare

public int compare(LogicalAddress1_4 other)
Establishes an order between 2 addresses. Assumes other contains non-null IpAddress. Excludes channel_name from comparison.

Returns:
0 for equality, value less than 0 if smaller, greater than 0 if greater.

compareTo

public int compareTo(java.lang.Object o)
implements the java.lang.Comparable interface

Specified by:
compareTo in interface java.lang.Comparable
Parameters:
o - - the Object to be compared
Returns:
a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
Throws:
java.lang.ClassCastException - - if the specified object's type prevents it from being compared to this Object.
See Also:
Comparable

equals

public boolean equals(java.lang.Object obj)

hashCode

public int hashCode()

toString

public java.lang.String toString()

toString

public java.lang.String toString(boolean print_details)

writeExternal

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

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Specified by:
readExternal in interface java.io.Externalizable
Throws:
java.io.IOException
java.lang.ClassNotFoundException

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Throws:
java.lang.CloneNotSupportedException

copy

public LogicalAddress1_4 copy()


Copyright ? 2001,2002 www.jgroups.com . All Rights Reserved.