## Package net.i2p.util

These classes define the several useful utilities used throughout the router and applications.

See:
Description

Interface Summary
Clock.ClockUpdateListener
EepGet.StatusListener
EventDispatcher: Event dispatching interface.
I2PProperties.I2PPropertyCallback
I2PThread.OOMEventListener
SimpleTimer.TimedEvent: Simple interface for events to be queued up and notified on expiration

Class Summary
Addresses: Get the local addresses
BufferedRandomSource: Deprecated. Unused! See FortunaRandomSource
ByteCache: Cache the objects frequently used to reduce memory churn.
CachingByteArrayOutputStream: Deprecated. unused
Clock: Alternate location for determining the time which takes into account an offset.
ConcurrentHashSet<E>: Implement on top of a ConcurrentHashMap with a dummy value.
ConvertToHash: Convert any kind of destination String to a hash Supported: Base64 dest Base64 dest.i2p Base64 Hash Base32 Hash Base32 desthash.b32.i2p example.i2p
Copy: Usage: Copy from to
DecayingBloomFilter: Series of bloom filters which decay over time, allowing their continual use for time sensitive data.
DecayingHashSet: Double buffered hash set.
Delete: Usage: Delete name
EepGet: EepGet [-p 127.0.0.1:4444] [-n #retries] [-o outputFile] [-m markSize lineLen] url Bug: a malformed url http://example.i2p (no trailing '/') fails cryptically
EepGetScheduler: Deprecated. unused a webapp version would be nice though
EepHead: This is a quick hack to get a working EepHead, primarily for the following usage:
EepPost: Deprecated. unused
EventDispatcherImpl: An implementation of the EventDispatcher interface.
Exec: Usage: Exec dir command [args ...]
Executor
FileUtil: General helper methods for messing with files These are static methods that do NOT convert arguments to absolute paths for a particular context and directtory.
FortunaRandomSource: Wrapper around GNU-Crypto's Fortuna PRNG.
HexDump: Hexdump class (well, it's actually a namespace with some functions, but let's stick with java terminology :-).
HTTPSendData: Deprecated. unused
I2PAppThread: Like I2PThread but with per-thread OOM listeners, rather than a static router-wide listener list, so that an OOM in an app won't call the router listener to shutdown the whole router.
I2PProperties: This class contains a number of properties ((key,value)-pairs).
I2PThread: In case its useful later...
InternalServerSocket: A simple in-JVM ServerSocket using Piped Streams.
InternalSocket: A simple in-JVM Socket using Piped Streams.
KeyRing: simple
Log: Wrapper class for whatever logging system I2P uses.
LogConsoleBuffer: Offer a glimpse into the last few console messages generated
LogLimit: Defines the log limit for a particular set of logs
LogManager: Manages the logging system, loading (and reloading) the configuration file, coordinating the log limits, and storing the set of log records pending.
LogRecord: Frisbee
LogRecordFormatter: Render a log record according to the log manager's settings
LogWriter: Log writer thread that pulls log records from the LogManager, writes them to the current logfile, and rotates the logs as necessary.
LookaheadInputStream: Simple lookahead buffer to keep the last K bytes in reserve, configured to easily be reused.
NativeBigInteger: BigInteger that takes advantage of the jbigi library for the modPow operation, which accounts for a massive segment of the processing cost of asymmetric crypto.
ObjectCounter<K>: Count things.
OrderedProperties: Properties map that has its keySet ordered consistently (via the key's lexicographical ordering).
PartialEepGet: Fetch exactly the first 'size' bytes into a stream Anything less or more will throw an IOException No retries, no min and max size options, no timeout option Useful for checking .sud versions
PooledRandomSource: Deprecated. Unused! See FortunaRandomSource
RandomSource: Singleton for whatever PRNG i2p uses.
ResettableGZIPInputStream: GZIP implementation per RFC 1952, reusing java's standard CRC32 and Inflater and InflaterInputStream implementations.
ResettableGZIPOutputStream: GZIP implementation per RFC 1952, reusing java's standard CRC32 and Deflater implementations.
ReusableGZIPInputStream: Provide a cache of reusable GZIP streams, each handling up to 32KB without expansion.
ReusableGZIPOutputStream: Provide a cache of reusable GZIP streams, each handling up to 32KB without expansion.
SecureDirectory: Same as File but sets the file mode after mkdir() so it can be read and written by the owner only (i.e.
SecureFile: Same as SecureDirectory but sets the file mode after createNewFile() and createTempFile() also.
SecureFileOutputStream: Same as FileOutputStream but sets the file mode so it can only be read and written by the owner only (i.e.
ShellCommand: Passes a command to the OS shell for execution and manages the input and output.
SimpleByteCache: Like ByteCache but works directly with byte arrays, not ByteArrays.
SimpleScheduler: Simple event scheduler - toss an event on the queue and it gets fired at the appropriate time.
SimpleStore
SimpleTimer: Simple event scheduler - toss an event on the queue and it gets fired at the appropriate time.
SimpleTimer2: Simple event scheduler - toss an event on the queue and it gets fired at the appropriate time.
SimpleTimer2.TimedEvent: Similar to SimpleTimer.TimedEvent but users must extend instead of implement, and all schedule and cancel methods are through this class rather than SimpleTimer2.
SocketTimeout: This should be deprecated.
SSLEepGet: HTTPS only, non-proxied only, no retries, no min and max size options, no timeout option Fails on 301 or 302 (doesn't follow redirect) Fails on bad certs (must have a valid cert chain) Self-signed certs or CAs not in the JVM key store must be loaded to be trusted.
SSLEepGet.SSLState: An opaque class for the caller to pass to repeated instantiations of SSLEepGet.
Translate: Translate strings efficiently.
VersionComparator: Compares versions.

## Package net.i2p.util Description

These classes define the several useful utilities used throughout the router and applications.