## Package org.klomp.snark

Interface Summary
CoordinatorListener: Callback used when some peer changes state.
DataLoader: Callback used to fetch data
PeerListener: Listener for Peer events.
ShutdownListener: Callback for end of shutdown sequence.
Snark.CompleteListener
StorageListener: Callback used when Storage changes.

Class Summary
BitField: Container of a byte array representing set and unset bits.
BWLimits: Connect via I2CP and ask the router the bandwidth limits.
ConnectionAcceptor: Accepts connections on a TCP port and routes them to sub-acceptors.
ExtensionHandler: REF: BEP 10 Extension Protocol
I2PSnarkUtil: I2P specific helpers for I2PSnark We use this class as a sort of context for i2psnark so we can run multiple instances of single Snarks (but not multiple SnarkManagers, it is still static)
MagnetState: Simple state for the download of the metainfo, shared between Peer and ExtensionHandler.
Message
MetaInfo: Note: this class is buggy, as it doesn't propogate custom meta fields into the bencoded info data, and from there to the info_hash.
PartialPiece: This is the class passed from PeerCoordinator to PeerState so PeerState may start requests.
Peer
PeerAcceptor: Accepts incomming connections from peers.
PeerCheckerTask: TimerTask that checks for good/bad up/downloader.
PeerConnectionIn
PeerConnectionOut
PeerCoordinator: Coordinates what peer does what.
PeerCoordinatorSet: Hmm, any guesses as to what this is? Used by the multitorrent functionality in the PeerAcceptor to pick the right PeerCoordinator to accept the con for.
PeerID: Store the address information about a peer.
PeerMonitorTask: TimerTask that monitors the peers and total up/download speeds.
PeerState
Piece: This class is used solely by PeerCoordinator.
Request: Holds all information needed for a partial piece request.
Snark: Main Snark program startup class.
SnarkManager: Manage multiple snarks
SnarkShutdown: Makes sure everything ends correctly when shutting down.
StaticSnark: Main snark startup class for staticly linking with gcj.
Storage: Maintains pieces on disk.
TrackerClient: Informs metainfo tracker of events and gets new peers for peer coordinator.
TrackerInfo: The data structure for the tracker response.