Class 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 Detail

      • SingleFileNamingService

        public SingleFileNamingService​(I2PAppContext context,
                                       String filename)
    • Method Detail

      • 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:
        options - ignored
        dest - non-null
        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
      • 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