net.i2p.client.naming
Class NamingService

java.lang.Object
  extended by net.i2p.client.naming.NamingService
Direct Known Subclasses:
DummyNamingService, SingleFileNamingService

public abstract class NamingService
extends Object

Naming services create a subclass of this class.


Field Summary
protected  I2PAppContext _context
           
protected  Set<NamingServiceListener> _listeners
           
protected  Log _log
           
protected  Set<NamingServiceUpdater> _updaters
           
static String PROP_IMPL
          what classname should be used as the naming service impl?
 
Constructor Summary
protected NamingService(I2PAppContext context)
          The naming service should only be constructed and accessed through the application context.
 
Method Summary
 boolean addNamingService(NamingService ns)
          Only for chaining-capable NamingServices.
 boolean addNamingService(NamingService ns, boolean head)
          Only for chaining-capable NamingServices
static NamingService createInstance(I2PAppContext context)
          Get a naming service instance.
 Map<String,String> getBase64Entries(Properties options)
          This may be more or less efficient than getEntries()
 Properties getConfiguration()
           
 Map<String,Destination> getEntries()
           
 Map<String,Destination> getEntries(Properties options)
           
 String getName()
           
 Set<String> getNames()
           
 Set<String> getNames(Properties options)
           
 List<NamingService> getNamingServices()
           
 NamingService getParent()
           
 Destination lookup(Hash hash, int timeout)
          Same as lookupB32 but with the SHA256 Hash precalculated
 Destination lookup(String hostname)
          Look up a host name.
abstract  Destination lookup(String hostname, Properties lookupOptions, Properties storedOptions)
          Same as lookup(hostname) but with in and out options Note that whether this (and lookup(hostname)) resolve B32 addresses is NamingService-specific.
 Destination lookupBase32(String hostname, int timeout)
          Lookup a Base 32 address.
protected  Destination lookupBase64(String hostname)
          Check if host name is valid Base64 encoded dest and return this dest in that case.
 boolean put(String hostname, Destination d)
           
 boolean put(String hostname, Destination d, Properties options)
           
 boolean putAll(Map<String,Destination> entries, Properties options)
           
 boolean putIfAbsent(String hostname, Destination d)
          Fails if entry previously exists
 boolean putIfAbsent(String hostname, Destination d, Properties options)
          Fails if entry previously exists
 void registerListener(NamingServiceListener nsl)
           
 void registerUpdater(NamingServiceUpdater nsu)
           
 boolean remove(String hostname)
           
 boolean remove(String hostname, Properties options)
           
 boolean removeNamingService(NamingService ns)
          Only for chaining-capable NamingServices
 void requestUpdate(Properties options)
          Ask any registered updaters to update now
 String reverseLookup(Destination dest)
          Reverse look up a destination
 String reverseLookup(Destination d, Properties options)
          Same as reverseLookup(dest) but with options
 String reverseLookup(Hash h)
          Deprecated. unused
 boolean setConfiguration(Properties p)
           
 void shutdown()
          Parent will call when removed.
 int size()
           
 int size(Properties options)
           
 void start()
          Parent will call when added.
 String toString()
           
 void unregisterListener(NamingServiceListener nsl)
           
 void unregisterUpdater(NamingServiceUpdater nsu)
           
 boolean update(String hostname, Destination d, Properties options)
          Fails if entry did not previously exist
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_log

protected final Log _log

_context

protected final I2PAppContext _context

_listeners

protected final Set<NamingServiceListener> _listeners

_updaters

protected final Set<NamingServiceUpdater> _updaters

PROP_IMPL

public static final String PROP_IMPL
what classname should be used as the naming service impl?

See Also:
Constant Field Values
Constructor Detail

NamingService

protected NamingService(I2PAppContext context)
The naming service should only be constructed and accessed through the application context. This constructor should only be used by the appropriate application context itself.

Method Detail

lookup

public Destination lookup(String hostname)
Look up a host name.

Returns:
the Destination for this host name, or null if name is unknown.

reverseLookup

public String reverseLookup(Destination dest)
Reverse look up a destination

Returns:
a host name for this Destination, or null if none is known. It is safe for subclasses to always return null if no reverse lookup is possible.

reverseLookup

public String reverseLookup(Hash h)
Deprecated. unused


lookupBase64

protected Destination lookupBase64(String hostname)
Check if host name is valid Base64 encoded dest and return this dest in that case. Useful as a "fallback" in custom naming implementations.


toString

public String toString()
Overrides:
toString in class Object

getName

public String getName()
Returns:
Class simple name by default
Since:
0.8.7

getConfiguration

public Properties getConfiguration()
Returns:
NamingService-specific options or null
Since:
0.8.7

setConfiguration

public boolean setConfiguration(Properties p)
Returns:
success
Since:
0.8.7

getNamingServices

public List<NamingService> getNamingServices()
Returns:
chained naming services or null
Since:
0.8.7

getParent

public NamingService getParent()
Returns:
parent naming service or null if this is the root
Since:
0.8.7

addNamingService

public boolean addNamingService(NamingService ns)
Only for chaining-capable NamingServices. Add to end of the list.

Returns:
success

addNamingService

public boolean addNamingService(NamingService ns,
                                boolean head)
Only for chaining-capable NamingServices

Parameters:
head - or tail
Returns:
success

removeNamingService

public boolean removeNamingService(NamingService ns)
Only for chaining-capable NamingServices

Returns:
success
Since:
0.8.7

size

public int size()
Returns:
number of entries or -1 if unknown
Since:
0.8.7

size

public int size(Properties options)
Parameters:
options - NamingService-specific, can be null
Returns:
number of entries (matching the options if non-null) or -1 if unknown
Since:
0.8.7

getEntries

public Map<String,Destination> getEntries()
Returns:
all mappings or empty Map if none; Returned Map is not necessarily sorted, implementation dependent
Since:
0.8.7

getEntries

public Map<String,Destination> getEntries(Properties options)
Parameters:
options - NamingService-specific, can be null
Returns:
all mappings (matching the options if non-null) or empty Map if none; Returned Map is not necessarily sorted, implementation dependent
Since:
0.8.7

getBase64Entries

public Map<String,String> getBase64Entries(Properties options)
This may be more or less efficient than getEntries()

Parameters:
options - NamingService-specific, can be null
Returns:
all mappings (matching the options if non-null) or empty Map if none; Returned Map is not necessarily sorted, implementation dependent
Since:
0.8.7

getNames

public Set<String> getNames()
Returns:
all known host names or empty Set if none; Returned Set is not necessarily sorted, implementation dependent
Since:
0.8.7

getNames

public Set<String> getNames(Properties options)
Parameters:
options - NamingService-specific, can be null
Returns:
all known host names (matching the options if non-null) or empty Set if none; Returned Set is not necessarily sorted, implementation dependent
Since:
0.8.7

put

public boolean put(String hostname,
                   Destination d)
Returns:
success
Since:
0.8.7

put

public boolean put(String hostname,
                   Destination d,
                   Properties options)
Parameters:
options - NamingService-specific, can be null
Returns:
success
Since:
0.8.7

putIfAbsent

public boolean putIfAbsent(String hostname,
                           Destination d)
Fails if entry previously exists

Returns:
success
Since:
0.8.7

putIfAbsent

public boolean putIfAbsent(String hostname,
                           Destination d,
                           Properties options)
Fails if entry previously exists

Parameters:
options - NamingService-specific, can be null
Returns:
success
Since:
0.8.7

putAll

public boolean putAll(Map<String,Destination> entries,
                      Properties options)
Parameters:
options - NamingService-specific, can be null
Returns:
success
Since:
0.8.7

update

public boolean update(String hostname,
                      Destination d,
                      Properties options)
Fails if entry did not previously exist

Parameters:
d - may be null if only options are changing
options - NamingService-specific, can be null
Returns:
success
Since:
0.8.7

remove

public boolean remove(String hostname)
Returns:
success
Since:
0.8.7

remove

public boolean remove(String hostname,
                      Properties options)
Parameters:
options - NamingService-specific, can be null
Returns:
success
Since:
0.8.7

requestUpdate

public void requestUpdate(Properties options)
Ask any registered updaters to update now

Parameters:
options - NamingService- or updater-specific, may be null
Since:
0.8.7

registerListener

public void registerListener(NamingServiceListener nsl)
Since:
0.8.7

unregisterListener

public void unregisterListener(NamingServiceListener nsl)
Since:
0.8.7

registerUpdater

public void registerUpdater(NamingServiceUpdater nsu)
Since:
0.8.7

unregisterUpdater

public void unregisterUpdater(NamingServiceUpdater nsu)
Since:
0.8.7

lookup

public abstract Destination lookup(String hostname,
                                   Properties lookupOptions,
                                   Properties storedOptions)
Same as lookup(hostname) but with in and out options Note that whether this (and lookup(hostname)) resolve B32 addresses is NamingService-specific.

Parameters:
lookupOptions - input parameter, NamingService-specific, can be null
storedOptions - output parameter, NamingService-specific, any stored properties will be added if non-null
Returns:
dest or null
Since:
0.8.7

reverseLookup

public String reverseLookup(Destination d,
                            Properties options)
Same as reverseLookup(dest) but with options

Parameters:
options - NamingService-specific, can be null
Returns:
host name or null
Since:
0.8.7

lookupBase32

public Destination lookupBase32(String hostname,
                                int timeout)
Lookup a Base 32 address. This may require the router to fetch the LeaseSet, which may take quite a while.

Parameters:
hostname - must be {52 chars}.b32.i2p
timeout - in seconds; <= 0 means use router default
Returns:
dest or null
Since:
0.8.7

lookup

public Destination lookup(Hash hash,
                          int timeout)
Same as lookupB32 but with the SHA256 Hash precalculated

Parameters:
timeout - in seconds; <= 0 means use router default
Returns:
dest or null
Since:
0.8.7

start

public void start()
Parent will call when added. If this is the root naming service, the core will start it. Should not be called by others.

Since:
0.8.7

shutdown

public void shutdown()
Parent will call when removed. If this is the root naming service, the core will stop it. Should not be called by others.

Since:
0.8.7

createInstance

public static final NamingService createInstance(I2PAppContext context)
Get a naming service instance. This method ensures that there will be only one naming service instance (singleton) as well as choose the implementation from the "i2p.naming.impl" system property. FIXME Actually, it doesn't ensure that. Only call this once!!!