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.
Since:
0.8.7
  • Constructor Details

    • SingleFileNamingService

      public SingleFileNamingService(I2PAppContext context, String filename)
  • Method Details

    • getName

      public String getName()
      Overrides:
      getName in class NamingService
      Returns:
      the file's absolute path
    • 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
    • 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:
      dest - non-null
      options - ignored
      Returns:
      hostname 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
      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
      Returns:
      success
    • 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
      Since:
      0.9.26, package private since 0.9.30, public since 0.9.31
    • 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
    • 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
    • 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.
      Since:
      0.9.20
    • 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
      Throws:
      IOException
      Since:
      0.9.20
    • getNames

      public Set<String> getNames(Properties options)
      Overrides:
      getNames in class NamingService
      Parameters:
      options - ignored
      Returns:
      all known hostnames, unsorted
    • 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
    • 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