Package net.i2p.data.router
Class RouterAddress
- java.lang.Object
-
- net.i2p.data.DataStructureImpl
-
- net.i2p.data.router.RouterAddress
-
- All Implemented Interfaces:
Serializable
,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. As of 0.9.3, expiration MUST be all zeros as it is ignored on readin and the signature will fail. If we implement expiration, or other use for the field, we must allow several releases for the change to propagate as it is backwards-incompatible. Restored as of 0.9.12.- Since:
- 0.9.16 moved from net.i2p.data
- Author:
- jrandom
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description RouterAddress()
RouterAddress(String style, OrderedProperties options, int cost)
For efficiency when created by a Transport.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
deepEquals(RouterAddress addr)
Everything, including Transport, host, port, options, and costboolean
equals(Object object)
Transport, host, and port only.int
getCost()
Retrieve the weighted cost of this address, relative to other methods of contacting this router.Date
getExpiration()
Deprecated.unused for nowlong
getExpirationTime()
Deprecated.unused for nowString
getHost()
Convenience, same as getOption("host").byte[]
getIP()
Caching version of InetAddress.getByName(getOption("host")).getAddress(), which is slow.String
getOption(String opt)
Properties
getOptions()
Deprecated.use getOptionsMap()Map<Object,Object>
getOptionsMap()
Retrieve the transport specific options necessary for communicationint
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 a few items for speed (expiration is always null).void
readBytes(InputStream in)
As of 0.9.3, expiration MUST be all zeros as it is ignored on readin and the signature will fail.void
setCost(int cost)
Configure the weighted cost of using the address.void
setExpiration(Date expiration)
Deprecated.unused for nowvoid
setOptions(Properties options)
Deprecated.unused, use 3-arg constructorvoid
setTransportStyle(String transportStyle)
Deprecated.unused, use 3-arg constructorString
toString()
This is used on peers.jsp so sort options so it looks better.void
writeBytes(OutputStream out)
As of 0.9.3, expiration MUST be all zeros as it is ignored on readin and the signature will fail.-
Methods inherited from class net.i2p.data.DataStructureImpl
calculateHash, fromBase64, fromByteArray, read, toBase64, toByteArray
-
-
-
-
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()
-
RouterAddress
public RouterAddress(String style, OrderedProperties options, int cost)
For efficiency when created by a Transport.- Parameters:
options
- not copied; do not reuse or modifycost
- 0-255- Since:
- IPv6
-
-
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- Returns:
- 0-255
-
setCost
public void setCost(int cost)
Configure the weighted cost of using the address. No value negative or above 255 is allowed. WARNING - do not change cost on a published address or it will break the RI sig. There is no check here. Rarely used, use 3-arg constructor. NTCP is set to 10 and SSU to 5 by default, unused before 0.7.12
-
getExpiration
@Deprecated public Date getExpiration()
Deprecated.unused for nowRetrieve the date after which the address should not be used. If this is null, then the address never expires. As of 0.9.3, expiration MUST be all zeros as it is ignored on readin and the signature will fail. Restored as of 0.9.12.- Returns:
- null for never, or a Date
-
getExpirationTime
@Deprecated public long getExpirationTime()
Deprecated.unused for nowRetrieve the date after which the address should not be used. If this is zero, then the address never expires.- Returns:
- 0 for never
- Since:
- 0.9.12
-
setExpiration
@Deprecated public void setExpiration(Date expiration)
Deprecated.unused for nowConfigure the expiration date of the address (null for no expiration) As of 0.9.3, expiration MUST be all zeros as it is ignored on readin and the signature will fail. Restored as of 0.9.12, wait several more releases before using. TODO: Use for introducers Unused for now, always null
-
getTransportStyle
public String getTransportStyle()
Retrieve the type of transport that must be used to communicate on this address.
-
setTransportStyle
@Deprecated public void setTransportStyle(String transportStyle)
Deprecated.unused, use 3-arg constructorConfigure the type of transport that must be used to communicate on this address- Throws:
IllegalStateException
- if was already set
-
getOptions
@Deprecated 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<Object,Object> getOptionsMap()
Retrieve the transport specific options necessary for communication- Returns:
- an unmodifiable view, non-null, sorted
- Since:
- 0.8.13
-
setOptions
@Deprecated public void setOptions(Properties options)
Deprecated.unused, use 3-arg constructorSpecify 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 hostnames, and negative caches also. As of 0.9.32, this works for literal IP addresses only, and does NOT resolve hostnames. If a hostname is specified in the options, this will return null. Use getHost() if you need the hostname.- Returns:
- IP or null
- Since:
- 0.9.3
-
getHost
public String getHost()
Convenience, same as getOption("host"). Does no parsing, so faster than getIP().- Returns:
- host string or null
- Since:
- IPv6
-
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
As of 0.9.3, expiration MUST be all zeros as it is ignored on readin and the signature will fail. Restored as of 0.9.12, wait several more releases before using.- Parameters:
in
- stream to read from- Throws:
IllegalStateException
- if was already read inDataFormatException
- if the data is improperly formattedIOException
- if there was a problem reading the stream
-
writeBytes
public void writeBytes(OutputStream out) throws DataFormatException, IOException
As of 0.9.3, expiration MUST be all zeros as it is ignored on readin and the signature will fail.- Parameters:
out
- stream to write to- Throws:
DataFormatException
- if the data was incomplete or not yet ready to be writtenIOException
- if there was a problem writing to the stream
-
equals
public boolean equals(Object object)
Transport, host, and port only. Never look at cost or other properties.
-
deepEquals
public boolean deepEquals(RouterAddress addr)
Everything, including Transport, host, port, options, and cost- Parameters:
addr
- may be null- Since:
- IPv6
-
hashCode
public int hashCode()
Just use a few items for speed (expiration is always null). Never look at cost or other properties.
-
-