# Uses of Package
org.klomp.snark

- Packages that use org.klomp.snark
  Package | Description
  --- | ---
  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.web | The I2PSnark web user interface package, providing a complete web-based torrent management system implemented as a webapp in i2psnark.war.

- Classes in org.klomp.snark used by org.klomp.snark
  Class and Description
  BandwidthListener Bandwidth and bandwidth limits
  BitField Container of a byte array representing set and unset bits for torrent piece availability.
  CompleteListener Callback for Snark events.
  ConnectionAcceptor Accepts incoming I2P connections and routes them to the appropriate PeerAcceptor.
  CoordinatorListener Callback interface for monitoring PeerCoordinator state changes.
  DataLoader Callback used to fetch data
  I2PSnarkUtil I2P-specific utilities and context management for I2PSnark.
  MagnetState Simple state for the download of the metainfo, shared between Peer and ExtensionHandler.
  MetaInfo Holds all information extracted from a torrent file.
  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.
  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.
  PeerListener Listener for Peer events.
  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.
  ShutdownListener Callback for end of shutdown sequence.
  Snark Main Snark program startup class.
  SnarkManager Central manager for multiple torrent downloads and the I2PSnark application.
  Storage Storage manages torrent data files on disk for I2PSnark.
  StorageListener Callback interface for monitoring Storage state changes and progress.
  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.
  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.

- Classes in org.klomp.snark used by org.klomp.snark.web
  Class and Description
  CoordinatorListener Callback interface for monitoring PeerCoordinator state changes.
  ShutdownListener Callback for end of shutdown sequence.
  Snark Main Snark program startup class.
  SnarkManager Central manager for multiple torrent downloads and the I2PSnark application.
  Storage Storage manages torrent data files on disk for I2PSnark.
  StorageListener Callback interface for monitoring Storage state changes and progress.