## 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
`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
`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, getBase64Entries, 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`
    `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

### 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

### 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`