net.i2p.client.naming
Class MetaNamingService

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

public class MetaNamingService
extends DummyNamingService

A naming service of multiple naming services. Supports .b32.i2p and {b64} lookups. Supports caching.


Field Summary
protected  List<NamingService> _services
           
 
Fields inherited from class net.i2p.client.naming.DummyNamingService
BASE32_HASH_LENGTH, CACHE_MAX_SIZE, DEST_SIZE, PROP_B32
 
Fields inherited from class net.i2p.client.naming.NamingService
_context, _listeners, _log, _updaters, PROP_IMPL
 
Constructor Summary
MetaNamingService(I2PAppContext context)
          Adds the services from the i2p.nameservicelist property, in order, as chained services.
MetaNamingService(I2PAppContext context, List<NamingService> services)
           
 
Method Summary
 boolean addNamingService(NamingService ns, boolean head)
          Only for chaining-capable NamingServices
 void export(Writer out, Properties options)
          All services aggregated.
 Map<String,String> getBase64Entries(Properties options)
          All services aggregated
 Map<String,Destination> getEntries(Properties options)
          All services aggregated
 Set<String> getNames(Properties options)
          All services aggregated
 List<NamingService> getNamingServices()
           
 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.
 boolean put(String hostname, Destination d, Properties options)
          Stores in the last service
 boolean putIfAbsent(String hostname, Destination d, Properties options)
          Stores in the last service
 void registerListener(NamingServiceListener nsl)
           
 boolean remove(String hostname, Properties options)
          Removes from all services
 boolean removeNamingService(NamingService ns)
          Only for chaining-capable NamingServices
 String reverseLookup(Destination dest, Properties options)
          Same as reverseLookup(dest) but with options
 void shutdown()
          Parent will call when removed.
 int size(Properties options)
          All services aggregated
 void unregisterListener(NamingServiceListener nsl)
           
 
Methods inherited from class net.i2p.client.naming.DummyNamingService
clearCache, getCache, putCache, removeCache
 
Methods inherited from class net.i2p.client.naming.NamingService
addNamingService, createInstance, export, getConfiguration, getEntries, getName, getNames, getParent, lookup, lookup, lookupBase32, lookupBase64, put, putAll, putIfAbsent, registerUpdater, remove, requestUpdate, reverseLookup, reverseLookup, setConfiguration, size, start, toString, unregisterUpdater, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_services

protected final List<NamingService> _services
Constructor Detail

MetaNamingService

public MetaNamingService(I2PAppContext context)
Adds the services from the i2p.nameservicelist property, in order, as chained services.


MetaNamingService

public MetaNamingService(I2PAppContext context,
                         List<NamingService> services)
Parameters:
services - if non-null, services to be added. If null, this will only handle b32 and b64, until addNamingService() is called later.
Since:
0.8.7
Method Detail

addNamingService

public boolean addNamingService(NamingService ns,
                                boolean head)
Description copied from class: NamingService
Only for chaining-capable NamingServices

Overrides:
addNamingService in class NamingService
head - or tail
Returns:
success

getNamingServices

public List<NamingService> getNamingServices()
Overrides:
getNamingServices in class NamingService
Returns:
chained naming services or null

removeNamingService

public boolean removeNamingService(NamingService ns)
Description copied from class: NamingService
Only for chaining-capable NamingServices

Overrides:
removeNamingService in class NamingService
Returns:
success

registerListener

public void registerListener(NamingServiceListener nsl)
Overrides:
registerListener in class NamingService

unregisterListener

public void unregisterListener(NamingServiceListener nsl)
Overrides:
unregisterListener in class NamingService

lookup

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

Overrides:
lookup in class DummyNamingService
Parameters:
hostname - mixed case as it could be a key
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

reverseLookup

public String reverseLookup(Destination dest,
                            Properties options)
Description copied from class: NamingService
Same as reverseLookup(dest) but with options

Overrides:
reverseLookup in class NamingService
Parameters:
dest - non-null
options - NamingService-specific, can be null
Returns:
host name or null

put

public boolean put(String hostname,
                   Destination d,
                   Properties options)
Stores in the last service

Overrides:
put in class NamingService
options - NamingService-specific, can be null
Returns:
success

putIfAbsent

public boolean putIfAbsent(String hostname,
                           Destination d,
                           Properties options)
Stores in the last service

Overrides:
putIfAbsent in class NamingService
options - NamingService-specific, can be null
Returns:
success

remove

public boolean remove(String hostname,
                      Properties options)
Removes from all services

Overrides:
remove in class NamingService
options - NamingService-specific, can be null
Returns:
success

getEntries

public Map<String,Destination> getEntries(Properties options)
All services aggregated

Overrides:
getEntries in class NamingService
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

getBase64Entries

public Map<String,String> getBase64Entries(Properties options)
All services aggregated

Overrides:
getBase64Entries in class NamingService
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.9.20

getNames

public Set<String> getNames(Properties options)
All services aggregated

Overrides:
getNames in class NamingService
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

export

public void export(Writer out,
                   Properties options)
            throws IOException
All services aggregated. Duplicates not removed (for efficiency)

Overrides:
export in class NamingService
options - NamingService-specific, can be null
Throws:
IOException
Since:
0.9.20

size

public int size(Properties options)
All services aggregated

Overrides:
size in class NamingService
Parameters:
options - NamingService-specific, can be null
Returns:
number of entries (matching the options if non-null) or -1 if unknown

shutdown

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

Overrides:
shutdown in class NamingService