net.i2p.client.naming

## Class SingleFileNamingService

- java.lang.Object
- - net.i2p.client.naming.NamingService
  - - net.i2p.client.naming.SingleFileNamingService

-     public class SingleFileNamingService
      extends NamingService

  A naming service based on a single file using the "hosts.txt" format. Supports adds, removes, and listeners. All methods here are case-sensitive. Conversion to lower case is done in HostsTxtNamingService. This does NOT provide .b32.i2p or {b64} resolution. It also does not do any caching. Use from HostsTxtNamingService or chain with another NamingService via MetaNamingService if you need those features.

- - ### Field Summary

    - ### Fields inherited from class net.i2p.client.naming.NamingService

      `_context, _listeners, _log, _updaters, PROP_IMPL`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SingleFileNamingService(I2PAppContext context, String filename)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `export(Writer out, Properties options)` Overridden for efficiency.
    `Map<String,String>` | `getBase64Entries(Properties options)` Overridden since we store base64 natively.
    `Map<String,Destination>` | `getEntries(Properties options)` Warning - This will bring the whole database into memory if options is null, empty, or unsupported, use with caution.
    `String` | `getName()` Get the name of this naming service.
    `Set<String>` | `getNames(Properties options)` Get all known hostnames matching the specified options.
    `Destination` | `lookup(String hostname, Properties lookupOptions, Properties storedOptions)` Will strip a "www." prefix and retry if lookup fails
    `boolean` | `put(String hostname, Destination d, Properties options)` Add a hostname and Destination to the addressbook.
    `boolean` | `putIfAbsent(String hostname, Destination d, Properties options)` Add a hostname and Destination to the addressbook.
    `boolean` | `remove(String hostname, Properties options)` Delete the entry.
    `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)` This implementation returns -1.
    `static void` | `writeOptions(Properties options, Writer out)` Write the subscription options part of the line (including the #!).

    - ### Methods inherited from class net.i2p.client.naming.NamingService

      `addDestination, addDestination, addNamingService, addNamingService, createInstance, export, getConfiguration, getEntries, getNames, getNamingServices, getParent, isB32Host, isBlindedHost, isI2PHost, lookup, lookup, lookupAll, lookupAll, lookupBase32, lookupBase64, put, putAll, putIfAbsent, registerListener, registerUpdater, remove, remove, remove, removeNamingService, requestUpdate, reverseLookup, reverseLookup, reverseLookupAll, reverseLookupAll, reverseLookupAll, setConfiguration, size, start, toString, unregisterListener, unregisterUpdater, update`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### SingleFileNamingService

          public SingleFileNamingService(I2PAppContext context,
                                         String filename)

  - ### Method Detail

    - #### export

          public void export(Writer out,
                             Properties options)
                      throws IOException

      Overridden for efficiency. Output is not sorted.
      Overrides:
        `export` in class `NamingService`
      Parameters:
        `options` - ignored
        `out` - the writer to export to
      Throws:
        `IOException` - if an I/O error occurs

    - #### getBase64Entries

          public Map<String,String> getBase64Entries(Properties options)

      Overridden since we store base64 natively.
      Overrides:
        `getBase64Entries` in class `NamingService`
      Parameters:
        `options` - null OK, or as follows: Key "search": return only those matching substring Key "startsWith": return only those starting with ("[0-9]" allowed)
      Returns:
        all mappings (matching the options if non-null) or empty Map if none. Returned Map is not sorted.

    - #### getEntries

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

      Description copied from class: `NamingService`
      Warning - This will bring the whole database into memory if options is null, empty, or unsupported, use with caution.
      Overrides:
        `getEntries` in class `NamingService`
      Parameters:
        `options` - null OK, or as follows: Key "search": return only those matching substring Key "startsWith": return only those starting with ("[0-9]" allowed)
      Returns:
        all mappings (matching the options if non-null) or empty Map if none; Returned Map is not necessarily sorted, implementation dependent

    - #### getName

          public String getName()

      Description copied from class: `NamingService`
      Get the name of this naming service.
      Overrides:
        `getName` in class `NamingService`
      Returns:
        the file's absolute path

    - #### getNames

          public Set<String> getNames(Properties options)

      Description copied from class: `NamingService`
      Get all known hostnames matching the specified options.
      Overrides:
        `getNames` in class `NamingService`
      Parameters:
        `options` - ignored
      Returns:
        all known host names, unsorted

    - #### lookup

          public Destination lookup(String hostname,
                                    Properties lookupOptions,
                                    Properties storedOptions)

      Will strip a "www." prefix and retry if lookup fails
      Specified by:
        `lookup` in class `NamingService`
      Parameters:
        `hostname` - case-sensitive; caller should convert to lower case
        `lookupOptions` - ignored
        `storedOptions` - ignored
      Returns:
        dest or null

    - #### put

          public boolean put(String hostname,
                             Destination d,
                             Properties options)

      Description copied from class: `NamingService`
      Add a hostname and Destination to the addressbook. Overwrites old entry if it exists. See also putIfAbsent() and update().
      Overrides:
        `put` in class `NamingService`
      Parameters:
        `hostname` - case-sensitive; caller should convert to lower case
        `options` - if non-null, any prefixed with '=' will be appended in subscription format
        `d` - the destination for the hostname
      Returns:
        success

    - #### putIfAbsent

          public boolean putIfAbsent(String hostname,
                                     Destination d,
                                     Properties options)

      Description copied from class: `NamingService`
      Add a hostname and Destination to the addressbook. Fails if entry previously exists. See also put() and update().
      Overrides:
        `putIfAbsent` in class `NamingService`
      Parameters:
        `hostname` - case-sensitive; caller should convert to lower case
        `options` - if non-null, any prefixed with '=' will be appended in subscription format
        `d` - the destination for the hostname
      Returns:
        success

    - #### remove

          public boolean remove(String hostname,
                                Properties options)

      Description copied from class: `NamingService`
      Delete the entry.
      Overrides:
        `remove` in class `NamingService`
      Parameters:
        `hostname` - case-sensitive; caller should convert to lower case
        `options` - ignored
      Returns:
        true if removed successfully, false on error or if it did not exist

    - #### 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 class `NamingService`
      Parameters:
        `options` - ignored
        `dest` - non-null destination to look up
      Returns:
        hostname or null

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

    - #### size

          public int size(Properties options)

      Description copied from class: `NamingService`
      This implementation returns -1. Most subclasses should override.
      Overrides:
        `size` in class `NamingService`
      Parameters:
        `options` - ignored
      Returns:
        number of entries (matching the options if non-null) or -1 if unknown

    - #### writeOptions

          public static void writeOptions(Properties options,
                                          Writer out)
                                   throws IOException

      Write the subscription options part of the line (including the #!). Only options starting with '=' (if any) are written (with the '=' stripped). Does not write a newline.
      Parameters:
        `options` - non-null
      Throws:
        `IOException`