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 SummaryConstructors Constructor Description RouterAddress()RouterAddress(String style, OrderedProperties options, int cost)For efficiency when created by a Transport.
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description booleandeepEquals(RouterAddress addr)Everything, including Transport, host, port, options, and costbooleanequals(Object object)Transport, host, and port only.intgetCost()Retrieve the weighted cost of this address, relative to other methods of contacting this router.DategetExpiration()Deprecated.unused for nowlonggetExpirationTime()Deprecated.unused for nowStringgetHost()Convenience, same as getOption("host").byte[]getIP()Caching version of InetAddress.getByName(getOption("host")).getAddress(), which is slow.StringgetOption(String opt)PropertiesgetOptions()Deprecated.use getOptionsMap()Map<Object,Object>getOptionsMap()Retrieve the transport specific options necessary for communicationintgetPort()Caching version of Integer.parseInt(getOption("port")) Caches valid ports 1-65535 only.StringgetTransportStyle()Retrieve the type of transport that must be used to communicate on this address.inthashCode()Just use a few items for speed (expiration is always null).voidreadBytes(InputStream in)As of 0.9.3, expiration MUST be all zeros as it is ignored on readin and the signature will fail.voidsetCost(int cost)Configure the weighted cost of using the address.voidsetExpiration(Date expiration)Deprecated.unused for nowvoidsetOptions(Properties options)Deprecated.unused, use 3-arg constructorvoidsetTransportStyle(String transportStyle)Deprecated.unused, use 3-arg constructorStringtoString()This is used on peers.jsp so sort options so it looks better.voidwriteBytes(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.DataStructureImplcalculateHash, fromBase64, fromByteArray, read, toBase64, toByteArray
 
- 
 
- 
- 
- 
Field Detail- 
PROP_HOSTpublic static final String PROP_HOST - See Also:
- Constant Field Values
 
 - 
PROP_PORTpublic static final String PROP_PORT - See Also:
- Constant Field Values
 
 
- 
 - 
Constructor Detail- 
RouterAddresspublic RouterAddress() 
 - 
RouterAddresspublic RouterAddress(String style, OrderedProperties options, int cost) For efficiency when created by a Transport.- Parameters:
- options- not copied; do not reuse or modify
- cost- 0-255
- Since:
- IPv6
 
 
- 
 - 
Method Detail- 
getCostpublic 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
 
 - 
setCostpublic 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
 - 
getTransportStylepublic 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
 
 - 
getOptionsMappublic 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
 
 - 
getIPpublic 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
 
 - 
getHostpublic String getHost() Convenience, same as getOption("host"). Does no parsing, so faster than getIP().- Returns:
- host string or null
- Since:
- IPv6
 
 - 
getPortpublic 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
 
 - 
readBytespublic 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 in
- DataFormatException- if the data is improperly formatted
- IOException- if there was a problem reading the stream
 
 - 
writeBytespublic 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 written
- IOException- if there was a problem writing to the stream
 
 - 
equalspublic boolean equals(Object object) Transport, host, and port only. Never look at cost or other properties.
 - 
deepEqualspublic boolean deepEquals(RouterAddress addr) Everything, including Transport, host, port, options, and cost- Parameters:
- addr- may be null
- Since:
- IPv6
 
 - 
hashCodepublic int hashCode() Just use a few items for speed (expiration is always null). Never look at cost or other properties.
 
- 
 
-