# Package 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.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  BandwidthListener | Bandwidth and bandwidth limits
  CompleteListener | Callback for Snark events.
  CoordinatorListener | Callback interface for monitoring PeerCoordinator state changes.
  DataLoader | Callback used to fetch data
  PeerListener | Listener for Peer events.
  ShutdownListener | Callback for end of shutdown sequence.
  StorageListener | Callback interface for monitoring Storage state changes and progress.

- Class Summary
  Class | Description
  --- | ---
  BandwidthManager | Bandwidth and bandwidth limits
  BitField | Container of a byte array representing set and unset bits for torrent piece availability.
  BWLimits | Retrieves bandwidth limits from an I2P router via I2CP.
  ConnectionAcceptor | Accepts incoming I2P connections and routes them to the appropriate PeerAcceptor.
  ExtensionHandler | REF: BEP 10 Extension Protocol
  I2PSnarkUtil | I2P-specific utilities and context management for I2PSnark.
  IdleChecker | Periodically check for idle condition based on connected peers, and reduce/restore tunnel count as necessary.
  MagnetState | Simple state for the download of the metainfo, shared between Peer and ExtensionHandler.
  MagnetURI | Magnet URI parser and handler for BitTorrent magnet links.
  Message | Represents a BitTorrent protocol message for peer communication.
  MetaInfo | Holds all information extracted from a torrent file.
  Mp3Test | Test utility for extracting and displaying MP3 metadata tags.
  PartialPiece | Represents a piece of a torrent being downloaded, storing partial data either on the heap or in a temporary file if the piece is large.
  Peer | Represents a peer in the BitTorrent network, managing all public information and communication with that peer.
  PeerAcceptor | Accepts incomming connections from peers.
  PeerCheckerTask | TimerTask that checks for good/bad up/downloader.
  PeerConnectionIn | Handles incoming BitTorrent protocol messages from a peer. This class runs in a separate thread to continuously read and parse incoming messages, delegating them to the appropriate PeerState handlers.
  PeerConnectionOut | Manages outgoing BitTorrent protocol messages to a peer. This class maintains a queue of outgoing messages and handles bandwidth limiting, message prioritization, and reliable delivery to the peer.
  PeerCoordinator | Coordinates peer activities for a single torrent including upload/download management, peer selection, piece distribution, and bandwidth allocation.
  PeerCoordinatorSet | Thread-safe collection for managing PeerCoordinator instances across multiple torrents.
  PeerID | Store the address information about a peer.
  PeerState | Manages the state and protocol logic for a BitTorrent peer connection. This class tracks peer interest/choking status, piece availability, request queues, and handles all BitTorrent protocol message processing.
  Piece | Represents a torrent piece and tracks which peers have it and are requesting it.
  Request | Holds all information needed for a partial piece request.
  Snark | Main Snark program startup class.
  SnarkCommandLine | Simple command line access to various utilities.
  SnarkManager | Central manager for multiple torrent downloads and the I2PSnark application.
  StaticSnark | Main snark startup class for staticly linking with gcj.
  Storage | Storage manages torrent data files on disk for I2PSnark.
  TorrentCreateFilter | A structure for torrent creation filters
  Tracker | Represents a known BitTorrent tracker with its configuration and capabilities.
  TrackerClient | Handles communication with BitTorrent trackers and DHT to discover new peers.
  TrackerInfo | The data structure for the tracker response.
  UDPTrackerClient | One of these for all trackers and info hashes.
  UDPTrackerClient.TrackerResponse | Represents a response from a UDP tracker. This class encapsulates the tracker's response including peer lists, interval information, and any error messages.
  UpdateHandler | Handles the request to update the router by firing up a magnet.
  UpdateRunner | The downloader for router signed updates.
  URIUtil | URI Holder.
  WebPeer | BEP 19.

- Exception Summary
  Exception | Description
  --- | ---
  PeerAcceptor.ProtocolException | A unique exception so we can tell the ConnectionAcceptor about non-BT connections
  Snark.RouterException | A unique exception class to blame the router that can be caught by SnarkManager

## Package org.klomp.snark Description

I2P version of the snark bittorrent client, imported in 2005 and heavily enhanced to add a web UI, DHT support, and other features.

I2PSnark provides a complete BitTorrent client implementation designed specifically for the I2P anonymous network, offering private file sharing with enhanced security and privacy features.

Key features include:

- Web-based user interface for easy management
- Distributed Hash Table (DHT) for trackerless torrents
- I2P integration for anonymous peer discovery
- Swarm management and bandwidth control
- Torrent creation and management tools