net.i2p.data
Class RouterAddress

java.lang.Object
  extended by net.i2p.data.DataStructureImpl
      extended by net.i2p.data.RouterAddress
All Implemented Interfaces:
DataStructure

public class RouterAddress
extends DataStructureImpl

Defines a method of communicating with a router For efficiency, the options methods and structures here are unsynchronized. Initialize the structure with readBytes(), or call the setOptions(). Don't change it after that. To ensure integrity of the RouterInfo, methods that change an element of the RouterInfo will throw an IllegalStateException after the RouterInfo is signed.

Author:
jrandom

Field Summary
static String PROP_HOST
           
static String PROP_PORT
           
 
Constructor Summary
RouterAddress()
           
 
Method Summary
 boolean equals(Object object)
           
 int getCost()
          Retrieve the weighted cost of this address, relative to other methods of contacting this router.
 Date getExpiration()
          Deprecated. unused for now
 byte[] getIP()
          Caching version of InetAddress.getByName(getOption("host")).getAddress(), which is slow.
 String getOption(String opt)
           
 Properties getOptions()
          Deprecated. use getOptionsMap()
 Map getOptionsMap()
          Retrieve the transport specific options necessary for communication
 int getPort()
          Caching version of Integer.parseInt(getOption("port")) Caches valid ports 1-65535 only.
 String getTransportStyle()
          Retrieve the type of transport that must be used to communicate on this address.
 int hashCode()
          Just use style and hashCode for speed (expiration is always null).
 void readBytes(InputStream in)
          Load up the current object with data from the given stream.
 void setCost(int cost)
          Configure the weighted cost of using the address.
 void setExpiration(Date expiration)
          Deprecated. unused for now
 void setOptions(Properties options)
          Specify the transport specific options necessary for communication.
 void setTransportStyle(String transportStyle)
          Configure the type of transport that must be used to communicate on this address
 String toString()
          This is used on peers.jsp so sort options so it looks better.
 void writeBytes(OutputStream out)
          Write out the data structure to the stream, using the format defined in the I2P data structure specification.
 
Methods inherited from class net.i2p.data.DataStructureImpl
calculateHash, fromBase64, fromByteArray, read, toBase64, toByteArray
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

PROP_HOST

public static final String PROP_HOST
See Also:
Constant Field Values

PROP_PORT

public static final String PROP_PORT
See Also:
Constant Field Values
Constructor Detail

RouterAddress

public RouterAddress()
Method Detail

getCost

public int getCost()
Retrieve the weighted cost of this address, relative to other methods of contacting this router. The value 0 means free and 255 means really expensive. No value above 255 is allowed. Unused before 0.7.12


setCost

public void setCost(int cost)
Configure the weighted cost of using the address. No value above 255 is allowed. NTCP is set to 10 and SSU to 5 by default, unused before 0.7.12


getExpiration

public Date getExpiration()
Deprecated. unused for now

Retrieve the date after which the address should not be used. If this is null, then the address never expires.

Returns:
null always

setExpiration

public void setExpiration(Date expiration)
Deprecated. unused for now

Configure the expiration date of the address (null for no expiration) Unused for now, always null


getTransportStyle

public String getTransportStyle()
Retrieve the type of transport that must be used to communicate on this address.


setTransportStyle

public void setTransportStyle(String transportStyle)
Configure the type of transport that must be used to communicate on this address

Throws:
IllegalStateException - if was already set

getOptions

public Properties getOptions()
Deprecated. use getOptionsMap()

Retrieve the transport specific options necessary for communication

Returns:
sorted, non-null, NOT a copy, do not modify

getOptionsMap

public Map getOptionsMap()
Retrieve the transport specific options necessary for communication

Returns:
an unmodifiable view, non-null, sorted
Since:
0.8.13

getOption

public String getOption(String opt)
Since:
0.8.13

setOptions

public void setOptions(Properties options)
Specify the transport specific options necessary for communication. Makes a copy.

Parameters:
options - non-null
Throws:
IllegalStateException - if was already set

getIP

public byte[] getIP()
Caching version of InetAddress.getByName(getOption("host")).getAddress(), which is slow. Caches numeric host names only. Will resolve but not cache resolution of DNS host names.

Returns:
IP or null
Since:
0.9.3

getPort

public int getPort()
Caching version of Integer.parseInt(getOption("port")) Caches valid ports 1-65535 only.

Returns:
1-65535 or 0 if invalid
Since:
0.9.3

readBytes

public void readBytes(InputStream in)
               throws DataFormatException,
                      IOException
Description copied from interface: DataStructure
Load up the current object with data from the given stream. Data loaded this way must match the I2P data structure specification.

Parameters:
in - stream to read from
Throws:
IllegalStateException - if was already read in
DataFormatException - if the data is improperly formatted
IOException - if there was a problem reading the stream

writeBytes

public void writeBytes(OutputStream out)
                throws DataFormatException,
                       IOException
Description copied from interface: DataStructure
Write out the data structure to the stream, using the format defined in the I2P data structure specification.

Parameters:
out - stream to write to
Throws:
DataFormatException - if the data was incomplete or not yet ready to be written
IOException - if there was a problem writing to the stream

equals

public boolean equals(Object object)
Overrides:
equals in class Object

hashCode

public int hashCode()
Just use style and hashCode for speed (expiration is always null). If we add multiple addresses of the same style, this may need to be changed.

Overrides:
hashCode in class Object

toString

public String toString()
This is used on peers.jsp so sort options so it looks better. We don't just use OrderedProperties for _options because DataHelper.writeProperties() sorts also.

Overrides:
toString in class Object