Package net.i2p.client.naming
Class MetaNamingService
- java.lang.Object
-
- net.i2p.client.naming.NamingService
-
- net.i2p.client.naming.DummyNamingService
-
- 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
Fields Modifier and Type Field Description 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
Constructors Constructor Description MetaNamingService(I2PAppContext context)
Adds the services from the i2p.nameservicelist property, in order, as chained services.MetaNamingService(I2PAppContext context, List<NamingService> services)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 aggregatedMap<String,Destination>
getEntries(Properties options)
All services aggregatedSet<String>
getNames(Properties options)
All services aggregatedList<NamingService>
getNamingServices()
This implementation returns null.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 Base 32 addresses in the form {52 chars}.b32.i2p is NamingService-specific.boolean
put(String hostname, Destination d, Properties options)
Stores in the last serviceboolean
putIfAbsent(String hostname, Destination d, Properties options)
Stores in the last servicevoid
registerListener(NamingServiceListener nsl)
boolean
remove(String hostname, Properties options)
Removes from all servicesboolean
removeNamingService(NamingService ns)
Only for chaining-capable NamingServices.String
reverseLookup(Destination dest, Properties options)
Same as reverseLookup(dest) but with options This implementation returns null.void
shutdown()
Parent will call when removed.int
size(Properties options)
All services aggregatedvoid
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
addDestination, addDestination, addNamingService, createInstance, export, getConfiguration, getEntries, getName, getNames, getParent, lookup, lookup, lookupAll, lookupAll, lookupBase32, lookupBase64, put, putAll, putIfAbsent, registerUpdater, remove, remove, remove, requestUpdate, reverseLookup, reverseLookup, reverseLookupAll, reverseLookupAll, reverseLookupAll, setConfiguration, size, start, toString, unregisterUpdater, update
-
-
-
-
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. This implementation returns false. Subclasses implementing chaining should override.- Overrides:
addNamingService
in classNamingService
head
- or tail- Returns:
- success
-
getNamingServices
public List<NamingService> getNamingServices()
Description copied from class:NamingService
This implementation returns null. Subclasses implementing chaining should override.- Overrides:
getNamingServices
in classNamingService
- Returns:
- chained naming services or null
-
removeNamingService
public boolean removeNamingService(NamingService ns)
Description copied from class:NamingService
Only for chaining-capable NamingServices. This implementation returns false. Subclasses implementing chaining should override.- Overrides:
removeNamingService
in classNamingService
- Returns:
- success
-
registerListener
public void registerListener(NamingServiceListener nsl)
- Overrides:
registerListener
in classNamingService
-
unregisterListener
public void unregisterListener(NamingServiceListener nsl)
- Overrides:
unregisterListener
in classNamingService
-
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 Base 32 addresses in the form {52 chars}.b32.i2p is NamingService-specific.- Overrides:
lookup
in classDummyNamingService
- Parameters:
hostname
- mixed case as it could be a keylookupOptions
- input parameter, NamingService-specific, can be nullstoredOptions
- 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 This implementation returns null. Subclasses implementing reverse lookups should override.- Overrides:
reverseLookup
in classNamingService
- Parameters:
dest
- non-nulloptions
- NamingService-specific, can be null- Returns:
- hostname or null
-
put
public boolean put(String hostname, Destination d, Properties options)
Stores in the last service- Overrides:
put
in classNamingService
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 classNamingService
options
- NamingService-specific, can be null- Returns:
- success
-
remove
public boolean remove(String hostname, Properties options)
Removes from all services- Overrides:
remove
in classNamingService
options
- NamingService-specific, can be null- Returns:
- true if removed successfully, false on error or if it did not exist
-
getEntries
public Map<String,Destination> getEntries(Properties options)
All services aggregated- Overrides:
getEntries
in classNamingService
- 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 classNamingService
- 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 classNamingService
- Parameters:
options
- NamingService-specific, can be null- Returns:
- all known hostnames (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 classNamingService
options
- NamingService-specific, can be null- Throws:
IOException
- Since:
- 0.9.20
-
size
public int size(Properties options)
All services aggregated- Overrides:
size
in classNamingService
- 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 classNamingService
-
-