Rice Pastry API

rice.pastry.socket
Class EpochInetSocketAddress

java.lang.Object
  extended by rice.pastry.socket.EpochInetSocketAddress
All Implemented Interfaces:
java.io.Serializable

public class EpochInetSocketAddress
extends java.lang.Object
implements java.io.Serializable

Class which represets a source route to a remote IP address.

Version:
$Id: EpochInetSocketAddress.java 3613 2007-02-15 14:45:14Z jstewart $
Author:
Alan Mislove
See Also:
Serialized Form

Field Summary
protected  java.net.InetSocketAddress[] address
           
protected  long epoch
           
static long EPOCH_UNKNOWN
           
 
Constructor Summary
EpochInetSocketAddress(java.net.InetSocketAddress address)
          Constructor - don't use this unless you know what you are doing
EpochInetSocketAddress(java.net.InetSocketAddress[] addressList, long epoch)
           
EpochInetSocketAddress(java.net.InetSocketAddress address, long epoch)
          Constructor
 
Method Summary
 boolean addressEquals(EpochInetSocketAddress that)
           
static EpochInetSocketAddress build(InputBuffer buf)
          EpochInetSocketAddress: (IPV4): +-+-+-+-+-+-+-+-+ + numAddrs + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address k + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port k + ...
 boolean equals(java.lang.Object o)
          Checks equaltiy on source routes
 java.net.InetSocketAddress getAddress(EpochInetSocketAddress local)
          Method which returns the address of this address
 java.net.InetSocketAddress getAddress(java.net.InetAddress[] local)
          This is for hairpinning support.
 long getEpoch()
          Method which returns the epoch of this address
 java.net.InetSocketAddress getInnermostAddress()
           
 short getSerializedLength()
           
 int hashCode()
          Returns the hashCode of this source route
 void serialize(OutputBuffer buf)
          EpochInetSocketAddress: (IPV4): +-+-+-+-+-+-+-+-+ + numAddrs + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address k + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port k + ...
 java.lang.String toString()
          Internal method for computing the toString of an array of InetSocketAddresses
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

EPOCH_UNKNOWN

public static final long EPOCH_UNKNOWN
See Also:
Constant Field Values

address

protected java.net.InetSocketAddress[] address

epoch

protected long epoch
Constructor Detail

EpochInetSocketAddress

public EpochInetSocketAddress(java.net.InetSocketAddress address)
Constructor - don't use this unless you know what you are doing

Parameters:
address - The remote address

EpochInetSocketAddress

public EpochInetSocketAddress(java.net.InetSocketAddress address,
                              long epoch)
Constructor

Parameters:
address - The remote address
epoch - The remote epoch

EpochInetSocketAddress

public EpochInetSocketAddress(java.net.InetSocketAddress[] addressList,
                              long epoch)
Method Detail

hashCode

public int hashCode()
Returns the hashCode of this source route

Overrides:
hashCode in class java.lang.Object
Returns:
The hashCode

equals

public boolean equals(java.lang.Object o)
Checks equaltiy on source routes

Overrides:
equals in class java.lang.Object
Parameters:
o - The source route to compare to
Returns:
The equality

addressEquals

public boolean addressEquals(EpochInetSocketAddress that)

toString

public java.lang.String toString()
Internal method for computing the toString of an array of InetSocketAddresses

Overrides:
toString in class java.lang.Object
Parameters:
path - The path
Returns:
THe string

getAddress

public java.net.InetSocketAddress getAddress(EpochInetSocketAddress local)
Method which returns the address of this address

Returns:
The address

getAddress

public java.net.InetSocketAddress getAddress(java.net.InetAddress[] local)
This is for hairpinning support. The Node is advertising many different InetSocketAddresses that it could be contacted on. In a typical NAT situation this will be 2: the NAT's external address, and the Node's non-routable address on the Lan. The algorithm sees if the external address matches its own external address. If it doesn't then the node is on a different lan, use the external. If the external address matches then both nodes are on the same Lan, and it uses the internal address because the NAT may not support hairpinning.

Parameters:
local - my sorted list of InetAddress
Returns:
the address I should use to contact the node

getInnermostAddress

public java.net.InetSocketAddress getInnermostAddress()

getEpoch

public long getEpoch()
Method which returns the epoch of this address

Returns:
The epoch

build

public static EpochInetSocketAddress build(InputBuffer buf)
                                    throws java.io.IOException
EpochInetSocketAddress: (IPV4): +-+-+-+-+-+-+-+-+ + numAddrs + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address k + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port k + ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + epoch (long) + + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Parameters:
buf -
Returns:
Throws:
java.io.IOException

serialize

public void serialize(OutputBuffer buf)
               throws java.io.IOException
EpochInetSocketAddress: (IPV4): +-+-+-+-+-+-+-+-+ + numAddrs + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + internet address k + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + port k + ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + epoch (long) + + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Parameters:
buf -
Throws:
java.io.IOException

getSerializedLength

public short getSerializedLength()

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection