||Bridge the router and the client - managing state for a client.
||Listen for connections on the specified port, and toss them onto the client manager's
set of connections once they are established.
||Coordinate connections and various tasks
||Base impl of the client facade
||Receive events from the client and handle them accordingly (updating the runner when
||Async writer class so that if a client app hangs, they wont take down the
whole router with them (since otherwise the JobQueue would block until
the client reads from their i2cp socket, causing all sorts of bad shit to
||Given an established connection, walk through the process of establishing the
||Listen for in-JVM connections on the internal "socket"
||Bundle up the data points necessary when asynchronously requesting a lease
from a client
||Look up the lease of a hash, to convert it to a Destination for the client
||Async job to notify the client that a new message is available for them
||Async job to send an abuse message to the client
||Async job to walk the client through generating a lease set.