## Uses of Class
net.i2p.data.Destination

- Packages that use Destination
  Package | Description
  --- | ---
  i2p.susi.dns | The SusiDNS webapp, which is the user interface for the addressbook application and the local naming service (hosts database) implemented in net.i2p.client.naming.
  net.i2p.client | Interfaces and factories for the base I2P SDK used to develop applications that communicate through I2P.
  net.i2p.client.datagram | Provides a standard way for reading and writing messages transferred over I2P so that recipient has an authenticated mechanism to reply to it.
  net.i2p.client.impl | Internal implementation of the I2P client SDK, providing the client side of the I2CP protocol for applications communicating through I2P.
  net.i2p.client.naming | Naming service for resolving human-readable names to I2P destinations, providing a standard interface without JNDI complexity.
  net.i2p.client.streaming | API, interfaces, and factory for a TCP-like (reliable, authenticated, in order) set of sockets for communicating over IP-like (unreliable, unauthenticated, unordered) I2P messages.
  net.i2p.client.streaming.impl | Implementation of a TCP-like (reliable, authenticated, in order) set of sockets for communicating over the IP-like (unreliable, unauthenticated, unordered) I2P messages.
  net.i2p.data | These classes define the common data structures used by the various I2P protocols.
  net.i2p.data.i2cp | The Invisible Internet Client Protocol (I2CP) allows applications simplified access to I2P network without requiring them to deal with the issues involved with the Invisible Internet Network Protocol (I2NP).
  net.i2p.i2ptunnel | Implementation of preconfigured tunnels for both clients and servers, with a comprehensive UI for tunnel management and configuration.
  net.i2p.i2ptunnel.access | Definition-based incoming connection filter for I2PTunnel, allowing fine-grained access control for server tunnels.
  net.i2p.i2ptunnel.socks | SOCKS protocol tunnel implementation for I2P, supporting SOCKS 4, 4a, and 5.
  net.i2p.i2ptunnel.streamr | Special-purpose tunnels for streaming UDP clients and servers, optimized for audio and video streaming applications.
  net.i2p.i2ptunnel.udp | Core API and interfaces used by UDP tunnel implementations.
  net.i2p.i2ptunnel.udpTunnel | UDP tunnel implementation for I2PTunnel.
  net.i2p.i2ptunnel.ui | Public API classes for programmatic tunnel configuration and management.
  net.i2p.i2ptunnel.web | Web-based user interface for managing I2PTunnel configurations, implemented as a webapp packaged in i2ptunnel.war.
  net.i2p.router | The I2P router application handles I2P network communication.
  net.i2p.router.client | Router-side implementation of the I2CP (I2P Client Protocol) interface for application integration.
  net.i2p.router.crypto.ratchet | Implementation of ECIES-X25519-AEAD-Ratchet cryptographic protocol (I2P proposal 144), providing forward secrecy and enhanced security for I2P transport communications.
  net.i2p.router.dummy | Dummy implementations and stub classes for testing purposes.
  net.i2p.router.message | Garlic message creation, parsing, and source routing for I2P communications.
  net.i2p.router.naming | The default naming service implementation for the I2P router, using the BlockfileNamingService based on the Metanotion BlockFile Database.
  net.i2p.router.networkdb.kademlia | Kademlia DHT implementation and floodfill router functionality for I2P.
  net.i2p.router.tunnel.pool | Tunnel pool management, creation, and peer selection for I2P's anonymous routing system.
  net.i2p.sam | The SAM (Simple Anonymous Messaging) client API.
  org.klomp.snark | I2P version of the snark bittorrent client, imported in 2005 and heavily enhanced to add a web UI, DHT support, and other features.
  org.klomp.snark.dht | Distributed Hash Table (DHT) implementation for BitTorrent.

- - ### Uses of Destination in i2p.susi.dns

    Constructors in i2p.susi.dns with parameters of type Destination
    Constructor and Description
    `AddressBean(String name, Destination destination)` Constructs an AddressBean with hostname and destination object.

  - ### Uses of Destination in net.i2p.client

    Methods in net.i2p.client that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | I2PClient.`createDestination(OutputStream destKeyStream)` Create a new destination with the default certificate creation properties and store it, along with the private encryption and signing keys at the specified location Caller must close stream.
    `Destination` | I2PSimpleClient.`createDestination(OutputStream destKeyStream)` Deprecated. Don't do this
    `Destination` | I2PClient.`createDestination(OutputStream destKeyStream, Certificate cert)` Create a new destination with the given certificate and store it, along with the private encryption and signing keys at the specified location Caller must close stream.
    `Destination` | I2PSimpleClient.`createDestination(OutputStream destKeyStream, Certificate cert)` Deprecated. Don't do this
    `Destination` | I2PClient.`createDestination(OutputStream destKeyStream, SigType type)` Create a destination with the given signature type.
    `Destination` | I2PSimpleClient.`createDestination(OutputStream destKeyStream, SigType type)` Deprecated. Don't do this
    `Destination` | LookupResult.`getDestination()`
    `Destination` | I2PSession.`getMyDestination()` Retrieve the Destination this session serves as the endpoint for.
    `Destination` | I2PSession.`lookupDest(Hash h)` Lookup a Destination by Hash.
    `Destination` | I2PSession.`lookupDest(Hash h, long maxWait)` Lookup a Destination by Hash.
    `Destination` | I2PSession.`lookupDest(String name)` Ask the router to lookup a Destination by host name.
    `Destination` | I2PSession.`lookupDest(String name, long maxWait)` Ask the router to lookup a Destination by host name.

    Methods in net.i2p.client with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload)` Send a new message to the given destination, containing the specified payload, returning true if the router feels confident that the message was delivered.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size)` Send a new message to the given destination, containing the specified payload, returning true if the router feels confident that the message was delivered.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport)` See I2PSessionMuxedImpl for proto/port details.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, int proto, int fromPort, int toPort, SendMessageOptions options)` See I2PSessionMuxedImpl for proto/port details.
    `long` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, int proto, int fromPort, int toPort, SendMessageOptions options, SendMessageStatusListener listener)` Send a message and request an asynchronous notification of delivery status.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent)` End-to-End Crypto is disabled, tags and keys are ignored.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, int proto, int fromPort, int toPort)` See I2PSessionMuxedImpl for proto/port details.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire)` End-to-End Crypto is disabled, tags and keys are ignored.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire, int proto, int fromPort, int toPort)` See I2PSessionMuxedImpl for proto/port details.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire, int proto, int fromPort, int toPort, int flags)` See I2PSessionMuxedImpl for proto/port details.
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set<SessionTag> tagsSent)` End-to-End Crypto is disabled, tags and keys are ignored! Like sendMessage above, except the key used and the tags sent are exposed to the application.

  - ### Uses of Destination in net.i2p.client.datagram

    Methods in net.i2p.client.datagram that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | I2PDatagramDissector.`extractSender()` Extract the sender of an I2P repliable datagram (previously loaded with the loadI2PDatagram() method), without verifying the datagram signature.
    `Destination` | Datagram2.`getSender()` Get the sender of an I2P repliable datagram (previously loaded with the load() method)
    `Destination` | I2PDatagramDissector.`getSender()` Get the sender of an I2P repliable datagram (previously loaded with the loadI2PDatagram() method), verifying the datagram signature.

  - ### Uses of Destination in net.i2p.client.impl

    Methods in net.i2p.client.impl that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | I2PClientImpl.`createDestination(OutputStream destKeyStream)` Create a destination with a DSA 1024/160 signature type and a null certificate.
    `Destination` | I2PClientImpl.`createDestination(OutputStream destKeyStream, Certificate cert)` Create the destination with the given payload and write it out along with the PrivateKey and SigningPrivateKey to the destKeyStream If cert is a KeyCertificate, the signing keypair will be of the specified type.
    `Destination` | I2PClientImpl.`createDestination(OutputStream destKeyStream, SigType type)` Create a destination with the given signature type.
    `Destination` | LkupResult.`getDestination()`
    `Destination` | I2PSessionImpl.`getMyDestination()` Retrieve the destination of the session
    `Destination` | I2PSessionImpl.`lookupDest(Hash h)` Blocking.
    `Destination` | SubSession.`lookupDest(Hash h)` Blocking.
    `Destination` | I2PSessionImpl.`lookupDest(Hash h, long maxWait)` Blocking.
    `Destination` | SubSession.`lookupDest(Hash h, long maxWait)` Blocking.
    `Destination` | I2PSessionImpl.`lookupDest(String name)` Ask the router to lookup a Destination by host name.
    `Destination` | SubSession.`lookupDest(String name)` Ask the router to lookup a Destination by host name.
    `Destination` | I2PSessionImpl.`lookupDest(String name, long maxWait)` Ask the router to lookup a Destination by host name.
    `Destination` | SubSession.`lookupDest(String name, long maxWait)` Ask the router to lookup a Destination by host name.

    Methods in net.i2p.client.impl with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `(package private) void` | I2PSessionImpl.`destReceived(Destination d)` Called by the message handler on reception of DestReplyMessage
    `(package private) void` | SubSession.`destReceived(Destination d)` Called by the message handler on reception of DestReplyMessage This will never happen, as the dest reply message does not contain a session ID.
    `(package private) void` | I2PSessionImpl.`destReceived(long nonce, Destination d)` Called by the message handler on reception of HostReplyMessage
    `(package private) void` | SubSession.`destReceived(long nonce, Destination d)` Called by the message handler on reception of HostReplyMessage
    `protected boolean` | I2PSessionImpl2.`sendBestEffort(Destination dest, byte[] payload, long expires, int flags)` TODO - Don't need to save MessageState since actuallyWait is false...
    `protected boolean` | I2PSessionImpl2.`sendBestEffort(Destination dest, byte[] payload, SessionKey keyUsed, Set<SessionTag> tagsSent, long expires)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload)` unused, see MuxedImpl override
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport)`
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, int proto, int fromport, int toport, SendMessageOptions options)`
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, int proto, int fromPort, int toPort, SendMessageOptions options)` See SendMessageOptions for option details.
    `long` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, int proto, int fromport, int toport, SendMessageOptions options, SendMessageStatusListener listener)`
    `long` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, int proto, int fromPort, int toPort, SendMessageOptions options, SendMessageStatusListener listener)` Send a message and request an asynchronous notification of delivery status.
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, int proto, int fromport, int toport)`
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, int proto, int fromport, int toport)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expires)` Unused? see MuxedImpl override
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expires)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire, int proto, int fromport, int toport)`
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expires, int proto, int fromPort, int toPort)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire, int proto, int fromport, int toport, int flags)`
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expires, int proto, int fromPort, int toPort, int flags)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set<SessionTag> tagsSent)`
    `void` | I2CPMessageProducer.`sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, long expires, int flags)` Package up and send the payload to the router for delivery
    `void` | I2CPMessageProducer.`sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, SendMessageOptions options)` Package up and send the payload to the router for delivery
    `void` | I2CPMessageProducer.`sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, SessionTag tag, SessionKey key, Set<SessionTag> tags, SessionKey newKey, long expires)` Package up and send the payload to the router for delivery
    `protected boolean` | I2PSessionImpl2.`sendNoEffort(Destination dest, byte[] payload, long expires, int flags)` Same as sendBestEffort(), except we do not expect any MessageStatusMessage responses - not for accepted, or success, or failure.

    Constructors in net.i2p.client.impl with parameters of type Destination
    Constructor and Description
    `LkupResult(int code, Destination dest)`
    `LkupResult(int code, Destination dest, int nonce)` Async

  - ### Uses of Destination in net.i2p.client.naming

    Methods in net.i2p.client.naming that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `protected static Destination` | DummyNamingService.`getCache(String s)`
    `Destination` | NamingService.`lookup(Hash hash, int timeout)` Same as lookupBase32() but with the SHA256 Hash precalculated This implementation returns null.
    `Destination` | NamingService.`lookup(String hostname)` Look up a hostname.
    `Destination` | EepGetAndAddNamingService.`lookup(String hostname)` Deprecated.
    `Destination` | DummyNamingService.`lookup(String hostname, Properties lookupOptions, Properties storedOptions)`
    `Destination` | MetaNamingService.`lookup(String hostname, Properties lookupOptions, Properties storedOptions)`
    `Destination` | SingleFileNamingService.`lookup(String hostname, Properties lookupOptions, Properties storedOptions)` Will strip a "www." prefix and retry if lookup fails
    `abstract Destination` | NamingService.`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.
    `Destination` | HostsTxtNamingService.`lookup(String hostname, Properties lookupOptions, Properties storedOptions)`
    `Destination` | EepGetNamingService.`lookup(String hostname, Properties lookupOptions, Properties storedOptions)`
    `Destination` | NamingService.`lookupBase32(String hostname, int timeout)` Lookup a Base 32 address.
    `(package private) static Destination` | LookupDest.`lookupBase32Hash(I2PAppContext ctx, String key)`
    `protected Destination` | NamingService.`lookupBase64(String hostname)` If the hostname is a valid Base64 encoded destination, return the decoded Destination.
    `(package private) static Destination` | LookupDest.`lookupHostname(I2PAppContext ctx, String hostname)` Any hostname, but this is for long-format b32

    Methods in net.i2p.client.naming that return types with arguments of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `Map<String,Destination>` | NamingService.`getEntries()` Warning - This obviously brings the whole database into memory, so use is discouraged.
    `Map<String,Destination>` | MetaNamingService.`getEntries(Properties options)` All services aggregated
    `Map<String,Destination>` | SingleFileNamingService.`getEntries(Properties options)`
    `Map<String,Destination>` | NamingService.`getEntries(Properties options)` Warning - This will bring the whole database into memory if options is null, empty, or unsupported, use with caution.
    `List<Destination>` | NamingService.`lookupAll(String hostname)` For NamingServices that support multiple Destinations for a single hostname, return all of them.
    `List<Destination>` | NamingService.`lookupAll(String hostname, Properties lookupOptions, List<Properties> storedOptions)` For NamingServices that support multiple Destinations and Properties for a single hostname, return all of them.

    Methods in net.i2p.client.naming with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | NamingService.`addDestination(String hostname, Destination d)` Add a Destination to an existing hostname's entry in the addressbook.
    `boolean` | NamingService.`addDestination(String hostname, Destination d, Properties options)` Add a Destination to an existing hostname's entry in the addressbook.
    `void` | NamingServiceListener.`entryAdded(NamingService ns, String hostname, Destination dest, Properties options)` Called when a new naming service entry is added.
    `void` | NamingServiceListener.`entryChanged(NamingService ns, String hostname, Destination dest, Properties options)` Called when a naming service entry changes.
    `boolean` | NamingService.`put(String hostname, Destination d)` Add a hostname and Destination to the addressbook.
    `boolean` | MetaNamingService.`put(String hostname, Destination d, Properties options)` Stores in the last service
    `boolean` | SingleFileNamingService.`put(String hostname, Destination d, Properties options)`
    `boolean` | NamingService.`put(String hostname, Destination d, Properties options)` Add a hostname and Destination to the addressbook.
    `boolean` | HostsTxtNamingService.`put(String hostname, Destination d, Properties options)`
    `protected static void` | DummyNamingService.`putCache(String s, Destination d)` Provide basic static caching for all services
    `boolean` | NamingService.`putIfAbsent(String hostname, Destination d)` Add a hostname and Destination to the addressbook.
    `boolean` | MetaNamingService.`putIfAbsent(String hostname, Destination d, Properties options)` Stores in the last service
    `boolean` | SingleFileNamingService.`putIfAbsent(String hostname, Destination d, Properties options)`
    `boolean` | NamingService.`putIfAbsent(String hostname, Destination d, Properties options)` Add a hostname and Destination to the addressbook.
    `boolean` | HostsTxtNamingService.`putIfAbsent(String hostname, Destination d, Properties options)`
    `boolean` | NamingService.`remove(String hostname, Destination d)` Remove a hostname's entry only if it contains the Destination d.
    `boolean` | NamingService.`remove(String hostname, Destination d, Properties options)` Remove a hostname's entry only if it contains the Destination d.
    `String` | NamingService.`reverseLookup(Destination dest)` Reverse lookup a destination.
    `String` | MetaNamingService.`reverseLookup(Destination dest, Properties options)`
    `String` | SingleFileNamingService.`reverseLookup(Destination dest, Properties options)`
    `String` | NamingService.`reverseLookup(Destination d, Properties options)` Same as reverseLookup(dest) but with options This implementation returns null.
    `List<String>` | NamingService.`reverseLookupAll(Destination dest)` Reverse lookup a destination This implementation returns reverseLookupAll(dest, null).
    `List<String>` | NamingService.`reverseLookupAll(Destination d, Properties options)` Same as reverseLookupAll(dest) but with options This implementation returns the result from reverseLookup, or null.
    `boolean` | NamingService.`update(String hostname, Destination d, Properties options)` Fails if entry did not previously exist.

    Method parameters in net.i2p.client.naming with type arguments of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | NamingService.`putAll(Map<String,Destination> entries, Properties options)` Put all the entries, each with the given options.

  - ### Uses of Destination in net.i2p.client.streaming

    Methods in net.i2p.client.streaming that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | I2PSocketAddress.`getAddress()` Does a naming service lookup to resolve the dest if this was created unresolved or if the resolution failed in the constructor.
    `Destination` | I2PSocket.`getPeerDestination()`
    `Destination` | I2PSocket.`getThisDestination()`

    Methods in net.i2p.client.streaming with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | IncomingConnectionFilter.`allowDestination(Destination d)` Check if the destination should be allowed to establish an incoming connection.
    `I2PSocket` | I2PSocketManager.`connect(Destination peer)` Create a new connected socket (block until the socket is created)
    `I2PSocket` | I2PSocketManager.`connect(Destination peer, I2PSocketOptions options)` Create a new connected socket (block until the socket is created)
    `Socket` | I2PSocketManager.`connectToSocket(Destination peer)` Like connect() but returns a real Socket, and throws only IOE, for easier porting of apps.
    `Socket` | I2PSocketManager.`connectToSocket(Destination peer, int timeout)` Like connect() but returns a real Socket, and throws only IOE, for easier porting of apps.
    `boolean` | I2PSocketManager.`ping(Destination peer, int localPort, int remotePort, long timeoutMs)` Ping the specified peer, returning true if they replied to the ping within the timeout specified, false otherwise.
    `byte[]` | I2PSocketManager.`ping(Destination peer, int localPort, int remotePort, long timeoutMs, byte[] payload)` Ping the specified peer, returning true if they replied to the ping within the timeout specified, false otherwise.
    `boolean` | I2PSocketManager.`ping(Destination peer, long timeoutMs)` Ping the specified peer, returning true if they replied to the ping within the timeout specified, false otherwise.

    Constructors in net.i2p.client.streaming with parameters of type Destination
    Constructor and Description
    `I2PSocketAddress(Destination dest, int port)` Does not do a reverse lookup.

  - ### Uses of Destination in net.i2p.client.streaming.impl

    Fields in net.i2p.client.streaming.impl declared as Destination
    Modifier and Type | Field and Description
    --- | ---
    `protected Destination` | Packet.`_optionFrom`

    Methods in net.i2p.client.streaming.impl that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | Packet.`getOptionalFrom()` the sender of the packet (only included if the flag for it is set)
    `Destination` | I2PSocketFull.`getPeerDestination()`
    `Destination` | Connection.`getRemotePeer()` who are we talking with
    `Destination` | I2PSocketFull.`getThisDestination()`
    `Destination` | PacketLocal.`getTo()`

    Methods in net.i2p.client.streaming.impl with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `I2PSocket` | I2PSocketManagerFull.`connect(Destination peer)` Create a new connected socket.
    `Connection` | ConnectionManager.`connect(Destination peer, ConnectionOptions opts, I2PSession session)` Build a new connection to the given peer.
    `I2PSocket` | I2PSocketManagerFull.`connect(Destination peer, I2PSocketOptions options)` Create a new connected socket.
    `Socket` | I2PSocketManagerFull.`connectToSocket(Destination peer)` Like connect() but returns a real Socket, and throws only IOE, for easier porting of apps.
    `Socket` | I2PSocketManagerFull.`connectToSocket(Destination peer, int timeout)` Like connect() but returns a real Socket, and throws only IOE, for easier porting of apps.
    `boolean` | ConnectionManager.`ping(Destination peer, int fromPort, int toPort, long timeoutMs)` blocking
    `boolean` | I2PSocketManagerFull.`ping(Destination peer, int localPort, int remotePort, long timeoutMs)` Ping the specified peer, returning true if they replied to the ping within the timeout specified, false otherwise.
    `boolean` | ConnectionManager.`ping(Destination peer, int fromPort, int toPort, long timeoutMs, boolean blocking)`
    `boolean` | ConnectionManager.`ping(Destination peer, int fromPort, int toPort, long timeoutMs, boolean blocking, ConnectionManager.PingNotifier notifier)`
    `byte[]` | ConnectionManager.`ping(Destination peer, int fromPort, int toPort, long timeoutMs, byte[] payload)` blocking
    `byte[]` | I2PSocketManagerFull.`ping(Destination peer, int localPort, int remotePort, long timeoutMs, byte[] payload)` Ping the specified peer, returning true if they replied to the ping within the timeout specified, false otherwise.
    `boolean` | ConnectionManager.`ping(Destination peer, long timeoutMs)` blocking
    `boolean` | I2PSocketManagerFull.`ping(Destination peer, long timeoutMs)` Ping the specified peer, returning true if they replied to the ping within the timeout specified, false otherwise.
    `void` | Connection.`setRemotePeer(Destination peer)`

    Constructors in net.i2p.client.streaming.impl with parameters of type Destination
    Constructor and Description
    `PacketLocal(I2PAppContext ctx, Destination to, Connection con)` bound to a connection
    `PacketLocal(I2PAppContext ctx, Destination to, I2PSession session)` not bound to a connection

  - ### Uses of Destination in net.i2p.data

    Subclasses of Destination in net.i2p.data
    Modifier and Type | Class and Description
    --- | ---
    `class` | `VerifiedDestination` Extend Destination with methods to verify its Certificate.

    Fields in net.i2p.data declared as Destination
    Modifier and Type | Field and Description
    --- | ---
    `protected Destination` | LeaseSet.`_destination`
    `protected Destination` | PrivateKeyFile.`dest`

    Methods in net.i2p.data that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `static Destination` | Destination.`create(InputStream in)` Pull from cache or return new
    `Destination` | PrivateKeyFile.`createIfAbsent()` Create with the default signature type if nonexistent.
    `Destination` | PrivateKeyFile.`createIfAbsent(SigType type)` Create with the specified signature type if nonexistent.
    `Destination` | LeaseSet.`getDestination()` Warning - will be null for LS2 EncryptedLeaseSets if not decrypted
    `Destination` | PrivateKeyFile.`getDestination()` If the destination is not set, read it in from the file.
    `Destination` | BlindData.`getDestination()` Gets the destination if known.

    Methods in net.i2p.data with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | LeaseSet.`setDestination(Destination dest)` Sets the destination for this leaseset.
    `void` | PrivateKeyFile.`setDestination(Destination d)`
    `void` | EncryptedLeaseSet.`setDestination(Destination dest)` Overridden to set the blinded key.
    `void` | BlindData.`setDestination(Destination d)` Sets the destination for this blinded data.
    `static boolean` | PrivateKeyFile.`verifySignature(Destination d)` Sample code to verify a 3rd party signature.

    Constructors in net.i2p.data with parameters of type Destination
    Constructor and Description
    `BlindData(I2PAppContext ctx, Destination dest, SigType blindType, String secret)` Creates a new BlindData instance for the given destination.
    `BlindData(I2PAppContext ctx, Destination dest, SigType blindType, String secret, int authType, PrivateKey authKey)` Creates a new BlindData instance for the given destination with authentication.
    `PrivateKeyFile(File file, Destination dest, PrivateKey pk, SigningPrivateKey spk)`
    `VerifiedDestination(Destination d)` create from an existing Dest

  - ### Uses of Destination in net.i2p.data.i2cp

    Fields in net.i2p.data.i2cp declared as Destination
    Modifier and Type | Field and Description
    --- | ---
    `protected Destination` | SendMessageMessage.`_destination`

    Methods in net.i2p.data.i2cp that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | HostReplyMessage.`getDestination()` Gets the destination.
    `Destination` | DestReplyMessage.`getDestination()`
    `Destination` | SessionConfig.`getDestination()` Retrieve the destination for which this session is supposed to connect
    `Destination` | SendMessageMessage.`getDestination()`

    Methods in net.i2p.data.i2cp with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | SendMessageMessage.`setDestination(Destination destination)` Deprecated. use 4-arg constructor

    Constructors in net.i2p.data.i2cp with parameters of type Destination
    Constructor and Description
    `BlindingInfoMessage(Destination d, SessionId id, int expiration, int authType, SigType blindType, PrivateKey privKey, String secret)` Creates a BlindingInfoMessage for a destination.
    `DestReplyMessage(Destination d)`
    `HostReplyMessage(SessionId id, Destination d, long reqID)` A message with RESULT_SUCCESS and a non-null Destination.
    `SendMessageExpiresMessage(SessionId sessID, Destination dest, Payload payload, long nonce)` For writing
    `SendMessageExpiresMessage(SessionId sessID, Destination dest, Payload payload, long nonce, DateAndFlags options)` For writing
    `SendMessageMessage(SessionId sessID, Destination dest, Payload payload, long nonce)` For writing
    `SessionConfig(Destination dest)`

  - ### Uses of Destination in net.i2p.i2ptunnel

    Fields in net.i2p.i2ptunnel declared as Destination
    Modifier and Type | Field and Description
    --- | ---
    `protected Destination` | I2PTunnelClientBase.`dest`

    Fields in net.i2p.i2ptunnel with type parameters of type Destination
    Modifier and Type | Field and Description
    --- | ---
    `protected List<Destination>` | I2PTunnelClient.`dests` Deprecated. why protected? Is anybody using out-of-tree? Protected from the beginning (2004)

    Methods in net.i2p.i2ptunnel that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `static Destination` | I2PTunnel.`destFromName(String name)` Deprecated. Don't use i2ptunnel for lookup! Use I2PAppContext.getGlobalContext().namingService().lookup(name) from i2p.jar
    `Destination` | TunnelController.`getDestination()` Returns null if not running.

    Methods in net.i2p.i2ptunnel with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `I2PSocket` | I2PTunnelClientBase.`createI2PSocket(Destination dest)` Create a new I2PSocket towards to the specified destination, adding it to the list of connections actually managed by this tunnel.
    `I2PSocket` | I2PTunnelClientBase.`createI2PSocket(Destination dest, I2PSocketOptions opt)` Create a new I2PSocket towards to the specified destination, adding it to the list of connections actually managed by this tunnel.
    `I2PSocket` | I2PTunnelClientBase.`createI2PSocket(Destination dest, int port)` Create a new I2PSocket towards to the specified destination, adding it to the list of connections actually managed by this tunnel.

  - ### Uses of Destination in net.i2p.i2ptunnel.access

    Methods in net.i2p.i2ptunnel.access with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | AccessFilter.`allowDestination(Destination d)` Determines if a connection to the given destination should be allowed.

  - ### Uses of Destination in net.i2p.i2ptunnel.socks

    Methods in net.i2p.i2ptunnel.socks that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | SOCKSHeader.`getDestination()`
    `Destination` | SocketWrapper.`getPeerDestination()`
    `Destination` | SocketWrapper.`getThisDestination()`

    Methods in net.i2p.i2ptunnel.socks with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | SOCKSUDPPort.`send(Destination from, int fromPort, int toPort, byte[] data)` May throw RuntimeException from underlying sink
    `void` | SOCKSUDPWrapper.`send(Destination from, int fromPort, int toPort, byte[] data)` Use the cached header, which should have the host string and port May throw RuntimeException from underlying sink
    `void` | SOCKSUDPUnwrapper.`send(Destination ignored_from, int fromPort, int toPort, byte[] data)` May throw RuntimeException from underlying sink
    `void` | MultiSink.`send(Destination from, int fromPort, int toPort, byte[] data)` Send to a single sink looked up by toPort May throw RuntimeException from underlying sinks

    Constructors in net.i2p.i2ptunnel.socks with parameters of type Destination
    Constructor and Description
    `SOCKSHeader(Destination dest, int port)` Make a dummy header from a dest, for those cases where we want to receive unsolicited datagrams.

  - ### Uses of Destination in net.i2p.i2ptunnel.streamr

    Fields in net.i2p.i2ptunnel.streamr declared as Destination
    Modifier and Type | Field and Description
    --- | ---
    `Destination` | MultiSource.MSink.`dest`

    Methods in net.i2p.i2ptunnel.streamr with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | MultiSource.`send(Destination ignored_from, int ignored_fromPort, int ignored_toPort, byte[] data)` May throw RuntimeException from underlying sinks
    `void` | Subscriber.`send(Destination dest, int fromPort, int toPort, byte[] data)` Doesn't really "send" anywhere, just subscribes or unsubscribes the destination

    Constructors in net.i2p.i2ptunnel.streamr with parameters of type Destination
    Constructor and Description
    `MSink(Destination dest, int fromPort, int toPort)`

  - ### Uses of Destination in net.i2p.i2ptunnel.udp

    Fields in net.i2p.i2ptunnel.udp declared as Destination
    Modifier and Type | Field and Description
    --- | ---
    `protected Destination` | I2PSink.`dest`

    Methods in net.i2p.i2ptunnel.udp with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | I2PSinkAnywhere.`send(Destination to, byte[] data)`
    `void` | UDPSink.`send(Destination src, int fromPort, int toPort, byte[] data)`
    `void` | Sink.`send(Destination src, int fromPort, int toPort, byte[] data)`
    `void` | I2PSink.`send(Destination src, int fromPort, int ign_toPort, byte[] data)`
    `void` | I2PSinkAnywhere.`send(Destination to, int fromPort, int toPort, byte[] data)`

    Constructors in net.i2p.i2ptunnel.udp with parameters of type Destination
    Constructor and Description
    `I2PSink(I2PSession sess, Destination dest)` repliable (not raw)
    `I2PSink(I2PSession sess, Destination dest, boolean raw)`
    `I2PSink(I2PSession sess, Destination dest, boolean raw, int toPort)`

  - ### Uses of Destination in net.i2p.i2ptunnel.udpTunnel

    Methods in net.i2p.i2ptunnel.udpTunnel with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | I2PTunnelUDPClientBase.`send(Destination to, int fromPort, int toPort, byte[] data)` Sink Methods
    `void` | I2PTunnelUDPServerBase.`send(Destination to, int fromPort, int toPort, byte[] data)` Sink Methods

  - ### Uses of Destination in net.i2p.i2ptunnel.ui

    Methods in net.i2p.i2ptunnel.ui that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | GeneralHelper.`getAltDestination(int tunnel)` Works even if tunnel is not running.
    `Destination` | GeneralHelper.`getDestination(int tunnel)` Works even if tunnel is not running.

    Methods in net.i2p.i2ptunnel.ui with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | TunnelConfig.`setDestination(Destination dest)` This is easier than requiring TunnelConfig to talk to TunnelControllerGroup and TunnelController.

  - ### Uses of Destination in net.i2p.i2ptunnel.web

    Methods in net.i2p.i2ptunnel.web that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `protected Destination` | IndexBean.`getAltDestination(int tunnel)` Works even if tunnel is not running.
    `protected Destination` | IndexBean.`getDestination(int tunnel)` Works even if tunnel is not running.

  - ### Uses of Destination in net.i2p.router

    Methods in net.i2p.router that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | ClientMessage.`getDestination()` Retrieve the destination to which this message is directed.
    `Destination` | ClientMessage.`getFromDestination()` Valid for outbound; null for inbound.
    `abstract Destination` | NetworkDatabaseFacade.`lookupDestinationLocally(Hash key)` Lookup locally in netDB and in badDest cache Succeeds even if LS validation failed due to unsupported sig type

    Methods in net.i2p.router that return types with arguments of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `Set<Destination>` | ClientManagerFacade.`listClients()` Return the list of locally connected clients

    Methods in net.i2p.router with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | TunnelManagerFacade.`addAlias(Destination dest, ClientTunnelSettings settings, Destination existingClient)` Add another destination to the same tunnels.
    `void` | TunnelManagerFacade.`buildTunnels(Destination client, ClientTunnelSettings settings)` The client connected (or updated their settings), so make sure we have the tunnels for them, and whenever necessary, ask them to authorize leases.
    `abstract SessionConfig` | ClientManagerFacade.`getClientSessionConfig(Destination dest)` Return the client's current config, or null if not connected
    `LeaseSetKeys` | KeyManager.`getKeys(Destination dest)` Get the keys registered for a destination.
    `abstract boolean` | ClientManagerFacade.`isLocal(Destination dest)` Determine if the destination specified is managed locally.
    `abstract void` | ClientManagerFacade.`messageDeliveryStatusUpdate(Destination fromDest, MessageId id, long messageNonce, int status)`
    `void` | KeyManager.`registerKeys(Destination dest, SigningPrivateKey leaseRevocationPrivateKey, List<PrivateKey> endpointDecryptionKeys)` Client with multiple keys
    `void` | KeyManager.`registerKeys(Destination dest, SigningPrivateKey leaseRevocationPrivateKey, PrivateKey endpointDecryptionKey)` Client with a single key
    `void` | ClientManagerFacade.`registerMetaDest(Destination dest)` Declare that we're going to publish a meta LS for this destination.
    `void` | TunnelManagerFacade.`removeAlias(Destination dest)` Remove another destination to the same tunnels.
    `void` | TunnelManagerFacade.`removeTunnels(Destination client)` Must be called AFTER deregistration by the client manager.
    `abstract void` | ClientManagerFacade.`reportAbuse(Destination dest, String reason, int severity)` Instruct the client (or all clients) that they are under attack.
    `abstract void` | ClientManagerFacade.`requestLeaseSet(Destination dest, LeaseSet set, long timeout, Job onCreateJob, Job onFailedJob)` Request that a particular client authorize the Leases contained in the LeaseSet, after which the onCreateJob is queued up.
    `LeaseSetKeys` | KeyManager.`unregisterKeys(Destination dest)` Unregister keys for a destination, removing them from memory.
    `void` | ClientManagerFacade.`unregisterMetaDest(Destination dest)` Declare that we're no longer going to publish a meta LS for this destination.

    Constructors in net.i2p.router with parameters of type Destination
    Constructor and Description
    `ClientMessage(Destination toDest, Payload payload, SessionConfig config, Destination fromDest, MessageId msgID, long messageNonce, long expiration, int flags)` For outbound (locally originated)
    `LeaseSetKeys(Destination dest, SigningPrivateKey revocationKey, List<PrivateKey> decryptionKeys)` Client with multiple keys The ONLY valid combinations are X25519 + ElG or X25519 + (MLKEM512 OR MLKEM768 OR MLKEM1024).
    `LeaseSetKeys(Destination dest, SigningPrivateKey revocationKey, PrivateKey decryptionKey)` Client with a single key

  - ### Uses of Destination in net.i2p.router.client

    Methods in net.i2p.router.client that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | ClientConnectionRunner.`getDestination(SessionId id)` Return the dest for the given ID

    Methods in net.i2p.router.client that return types with arguments of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `(package private) List<Destination>` | ClientConnectionRunner.`getDestinations()` Subsession aware.
    `(package private) Set<Destination>` | ClientManager.`getRunnerDestinations()`
    `Set<Destination>` | ClientManager.`listClients()` Unsynchronized.
    `Set<Destination>` | ClientManagerFacadeImpl.`listClients()` Return the list of locally connected clients

    Methods in net.i2p.router.client with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `int` | ClientManager.`destinationEstablished(ClientConnectionRunner runner, Destination dest)` Add to the clients list.
    `(package private) void` | ClientManager.`distributeMessage(ClientConnectionRunner sender, Destination fromDest, Destination toDest, Payload payload, MessageId msgId, long messageNonce, long expiration, int flags)` Distribute message to a local or remote destination.
    `SessionConfig` | ClientManager.`getClientSessionConfig(Destination dest)` Return the client's current config, or null if not connected
    `SessionConfig` | ClientManagerFacadeImpl.`getClientSessionConfig(Destination dest)` Return the client's current config, or null if not connected
    `(package private) ClientConnectionRunner` | ClientManager.`getRunner(Destination dest)` Unsynchronized
    `boolean` | ClientManager.`isLocal(Destination dest)` Unsynchronized.
    `boolean` | ClientManagerFacadeImpl.`isLocal(Destination dest)` Determine if the destination specified is managed locally.
    `void` | ClientManager.`messageDeliveryStatusUpdate(Destination fromDest, MessageId id, long messageNonce, int status)`
    `void` | ClientManagerFacadeImpl.`messageDeliveryStatusUpdate(Destination fromDest, MessageId id, long messageNonce, int status)`
    `(package private) boolean` | ClientConnectionRunner.`receiveMessage(Destination toDest, Destination fromDest, Payload payload)` Synchronously deliver the message to the current runner Failure indication is available as of 0.9.29.
    `(package private) boolean` | ClientConnectionRunner.`receiveMessage(Hash toHash, Destination fromDest, Payload payload)` Synchronously deliver the message to the current runner Failure indication is available as of 0.9.29.
    `void` | ClientManager.`registerMetaDest(Destination dest)` Declare that we're going to publish a meta LS for this destination.
    `void` | ClientManagerFacadeImpl.`registerMetaDest(Destination dest)` Declare that we're going to publish a meta LS for this destination.
    `void` | ClientConnectionRunner.`reportAbuse(Destination dest, String reason, int severity)` Send async abuse message to the client
    `void` | ClientManager.`reportAbuse(Destination dest, String reason, int severity)` Unused
    `void` | ClientManagerFacadeImpl.`reportAbuse(Destination dest, String reason, int severity)` Instruct the client (or all clients) that they are under attack.
    `void` | ClientManager.`requestLeaseSet(Destination dest, LeaseSet set, long timeout, Job onCreateJob, Job onFailedJob)` Request that a particular client authorize the Leases contained in the LeaseSet, after which the onCreateJob is queued up.
    `void` | ClientManagerFacadeImpl.`requestLeaseSet(Destination dest, LeaseSet set, long timeout, Job onCreateJob, Job onFailedJob)` Request that a particular client authorize the Leases contained in the LeaseSet, after which the onCreateJob is queued up.
    `void` | ClientManager.`unregisterMetaDest(Destination dest)` Declare that we're no longer going to publish a meta LS for this destination.
    `void` | ClientManagerFacadeImpl.`unregisterMetaDest(Destination dest)` Declare that we're no longer going to publish a meta LS for this destination.
    `void` | ClientManager.`unregisterSession(SessionId id, Destination dest)` Remove only the following session.
    `(package private) void` | ClientConnectionRunner.`updateMessageDeliveryStatus(Destination dest, MessageId id, long messageNonce, int status)` Send a notification to the client that their message (id specified) was delivered (or failed delivery) Note that this sends the Guaranteed status codes, even though we only support best effort.

    Constructors in net.i2p.router.client with parameters of type Destination
    Constructor and Description
    `MessageReceivedJob(RouterContext ctx, ClientConnectionRunner runner, Destination toDest, Destination fromDest, Payload payload, boolean sendDirect)`
    `ReportAbuseJob(RouterContext context, ClientConnectionRunner runner, Destination dest, String reason, int severity)`

  - ### Uses of Destination in net.i2p.router.crypto.ratchet

    Methods in net.i2p.router.crypto.ratchet that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | RatchetSKM.`getDestination()` The local destination for this SKM
    `(package private) Destination` | RatchetSKM.`getDestination(PublicKey target)`

    Methods in net.i2p.router.crypto.ratchet with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `(package private) boolean` | RatchetSKM.`createSession(PublicKey target, Destination d, HandshakeState state, ReplyCallback callback)` Inbound or outbound.
    `byte[]` | ECIESAEADEngine.`encrypt(CloveSet cloves, PublicKey target, Destination to, PrivateKey priv, RatchetSKM keyManager, ReplyCallback callback)` Encrypt the data to the target using the given key and deliver the specified tags No new session key This is the one called from GarlicMessageBuilder and is the primary entry point.
    `(package private) boolean` | RatchetSKM.`registerTimer(PublicKey target, Destination d, SimpleTimer2.TimedEvent timer)` Side effect - binds this session to the supplied destination.

    Constructors in net.i2p.router.crypto.ratchet with parameters of type Destination
    Constructor and Description
    `ACKTimer(RouterContext context, Destination from, Destination to)` ACK timer for ratchet.
    `RatchetSKM(RouterContext context, Destination dest)` ECIES only.
    `RatchetSKM(RouterContext context, Destination dest, EncType type)` The session key manager is constructed and accessed through the client manager.

  - ### Uses of Destination in net.i2p.router.dummy

    Methods in net.i2p.router.dummy that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | DummyNetworkDatabaseFacade.`lookupDestinationLocally(Hash key)`

    Methods in net.i2p.router.dummy with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | DummyTunnelManagerFacade.`addAlias(Destination dest, ClientTunnelSettings settings, Destination existingClient)`
    `void` | DummyTunnelManagerFacade.`buildTunnels(Destination client, ClientTunnelSettings settings)`
    `SessionConfig` | DummyClientManagerFacade.`getClientSessionConfig(Destination _dest)`
    `boolean` | DummyClientManagerFacade.`isLocal(Destination dest)`
    `void` | DummyClientManagerFacade.`messageDeliveryStatusUpdate(Destination fromDest, MessageId id, long msgNonce, int status)`
    `void` | DummyTunnelManagerFacade.`removeAlias(Destination dest)`
    `void` | DummyTunnelManagerFacade.`removeTunnels(Destination client)`
    `void` | DummyClientManagerFacade.`reportAbuse(Destination dest, String reason, int severity)`
    `void` | DummyClientManagerFacade.`requestLeaseSet(Destination dest, LeaseSet set, long timeout, Job onCreateJob, Job onFailedJob)`

  - ### Uses of Destination in net.i2p.router.message

    Methods in net.i2p.router.message with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `(package private) static GarlicMessage` | GarlicMessageBuilder.`buildECIESMessage(RouterContext ctx, GarlicConfig config, Hash from, Destination to, SessionKeyManager skm, ReplyCallback callback)` ECIES_X25519 and PQ only.
    `(package private) static GarlicMessage` | OutboundClientMessageJobHelper.`createGarlicMessage(RouterContext ctx, long replyToken, long expiration, PublicKey recipientPK, PayloadGarlicConfig dataClove, Hash from, Destination dest, TunnelInfo replyTunnel, int tagsToSendOverride, int lowTagsOverride, SessionKey wrappedKey, Set<SessionTag> wrappedTags, boolean requireAck, LeaseSet bundledReplyLeaseSet, ReplyCallback callback)` Allow the app to specify the data clove directly, which enables OutboundClientMessage to resend the same payload (including expiration and unique id) in different garlics (down different tunnels) This is called from OCMOSJ

  - ### Uses of Destination in net.i2p.router.naming

    Methods in net.i2p.router.naming that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | BlockfileNamingService.`lookup(String hostname, Properties lookupOptions, Properties storedOptions)`

    Methods in net.i2p.router.naming that return types with arguments of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `Map<String,Destination>` | BlockfileNamingService.`getEntries(Properties options)`
    `List<Destination>` | BlockfileNamingService.`lookupAll(String hostname, Properties lookupOptions, List<Properties> storedOptions)` Return all of the entries found in the first list found, or in the list specified in lookupOptions.

    Methods in net.i2p.router.naming with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | BlockfileNamingService.`addDestination(String hostname, Destination d, Properties options)` Add a Destination to an existing hostname's entry in the addressbook.
    `boolean` | BlockfileNamingService.`put(String hostname, Destination d, Properties options)`
    `boolean` | BlockfileNamingService.`putIfAbsent(String hostname, Destination d, Properties options)`
    `boolean` | BlockfileNamingService.`remove(String hostname, Destination d, Properties options)` Remove a hostname's entry only if it contains the Destination d.
    `String` | BlockfileNamingService.`reverseLookup(Destination d, Properties options)`
    `List<String>` | BlockfileNamingService.`reverseLookupAll(Destination d, Properties options)`

  - ### Uses of Destination in net.i2p.router.networkdb.kademlia

    Methods in net.i2p.router.networkdb.kademlia that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | NegativeLookupCache.`getBadDest(Hash h)` Get an unsupported but cached Destination
    `Destination` | KademliaNetworkDatabaseFacade.`lookupDestinationLocally(Hash key)` Lookup locally in netDB and in badDest cache Succeeds even if LS validation fails due to unsupported sig type, expired, etc.

    Methods in net.i2p.router.networkdb.kademlia with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | NegativeLookupCache.`failPermanently(Destination dest)` Negative cache the hash until restart, but cache the destination.
    `(package private) void` | KademliaNetworkDatabaseFacade.`failPermanently(Destination dest)` Negative cache until restart
    `Hash` | BlindCache.`getBlindedHash(Destination dest)` The hash to lookup for a dest.
    `BlindData` | BlindCache.`getData(Destination dest)` The cached data or null
    `Hash` | BlindCache.`getHash(Destination dest)` The hash to lookup for a dest.
    `String` | FloodfillNetworkDatabaseFacade.`getTunnelName(Destination d)`
    `String` | RepublishLeaseSetJob.`getTunnelName(Destination d)`
    `String` | ExpireLeasesJob.`getTunnelName(Destination d)`
    `void` | BlindCache.`setBlinded(Destination dest)` Add the destination to the cache entry.
    `void` | BlindCache.`setBlinded(Destination dest, SigType blindedType, String secret)` Mark a destination as known to be blinded

  - ### Uses of Destination in net.i2p.router.tunnel.pool

    Methods in net.i2p.router.tunnel.pool with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | TunnelPoolManager.`addAlias(Destination dest, ClientTunnelSettings settings, Destination existingClient)` Add another destination to the same tunnels.
    `void` | TunnelPoolManager.`buildTunnels(Destination client, ClientTunnelSettings settings)` Used only at session startup.
    `void` | TunnelPoolManager.`removeAlias(Destination dest)` Remove a destination for the same tunnels as another.
    `void` | TunnelPoolManager.`removeTunnels(Destination dest)` Must be called AFTER deregistration by the client manager.

  - ### Uses of Destination in net.i2p.sam

    Methods in net.i2p.sam that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `static Destination` | SAMUtils.`getDest(String s)` Resolve the destination from a key or a hostname
    `Destination` | SAMMessageSession.`getDestination()` Get the SAM message-based session Destination.
    `Destination` | SAMMessageSess.`getDestination()` Get the SAM message-based session Destination.
    `Destination` | SAMStreamSession.`getDestination()` Get the SAM STREAM session Destination.

    Methods in net.i2p.sam with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | SAMv3Handler.`notifyStreamIncomingConnection(Destination d, int fromPort, int toPort)`
    `void` | SAMv1Handler.`notifyStreamIncomingConnection(int id, Destination d)`
    `void` | SAMStreamReceiver.`notifyStreamIncomingConnection(int id, Destination dest)` Notify about a new incoming connection
    `static void` | SAMv3Handler.`notifyStreamIncomingConnection(SocketChannel client, Destination d)`
    `static void` | SAMv3Handler.`notifyStreamIncomingConnection(SocketChannel client, Destination d, int fromPort, int toPort)`
    `void` | SAMv1Handler.`receiveDatagramBytes(Destination sender, byte[] data, int proto, int fromPort, int toPort)`
    `void` | MasterSession.`receiveDatagramBytes(Destination sender, byte[] data, int proto, int fromPort, int toPort)`
    `void` | SAMDatagramReceiver.`receiveDatagramBytes(Destination sender, byte[] data, int proto, int fromPort, int toPort)` Send a byte array to a SAM client.
    `void` | SAMv3DatagramSession.`receiveDatagramBytes(Destination sender, byte[] data, int proto, int fromPort, int toPort)`

  - ### Uses of Destination in org.klomp.snark

    Methods in org.klomp.snark that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | PeerID.`getAddress()` Get the destination.
    `Destination` | Peer.`getDestination()`
    `(package private) Destination` | I2PSnarkUtil.`getDestination(String ip)` Base64 Hash or Hash.i2p or name.i2p using naming service
    `(package private) static Destination` | I2PSnarkUtil.`getDestinationFromBase64(String ip)` Base64 only - static (no naming service)
    `(package private) Destination` | I2PSnarkUtil.`getMyDestination()`

    Constructors in org.klomp.snark with parameters of type Destination
    Constructor and Description
    `PeerID(byte[] id, Destination address)`

  - ### Uses of Destination in org.klomp.snark.dht

    Methods in org.klomp.snark.dht that return Destination
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | NodeInfo.`getDestination()`

    Methods in org.klomp.snark.dht with parameters of type Destination
    Modifier and Type | Method and Description
    --- | ---
    `void` | DHT.`ping(Destination dest, int port)` Ping.
    `void` | KRPC.`ping(Destination dest, int port)` Ping.
    `void` | NodeInfo.`setDestination(Destination dest)` This can come in later but the hash must match.

    Constructors in org.klomp.snark.dht with parameters of type Destination
    Constructor and Description
    `NodeInfo(Destination dest, int port)` With a fake NID used for pings
    `NodeInfo(NID nID, Destination dest, int port)` Use this if we have the full destination