I2P version of the snark bittorrent client, imported in 2005 and heavily enhanced to add a web UI, DHT support, and other features.
Interface Summary Interface Description CompleteListenerCallback for Snark events. CoordinatorListenerCallback used when some peer changes state. DataLoaderCallback used to fetch data PeerListenerListener for Peer events. ShutdownListenerCallback for end of shutdown sequence. StorageListenerCallback used when Storage changes.
Class Summary Class Description BitFieldContainer of a byte array representing set and unset bits. BWLimitsConnect via I2CP and ask the router the bandwidth limits. CommandLineSimple command line access to various utilities. ConnectionAcceptorAccepts connections on a I2PServerSocket and routes them to PeerAcceptors. ExtensionHandlerREF: BEP 10 Extension Protocol I2PSnarkUtilI2P 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) IdleCheckerPeriodically check for idle condition based on connected peers, and reduce/restore tunnel count as necessary. MagnetStateSimple state for the download of the metainfo, shared between Peer and ExtensionHandler. MagnetURI MessageUsed to queue outgoing connections sendMessage() should be used to translate them to wire format. MetaInfoNote: this class is buggy, as it doesn't propogate custom meta fields into the bencoded info data, and from there to the info_hash. PartialPieceStore the received data either on the heap or in a temp file. Peer PeerAcceptorAccepts incomming connections from peers. PeerCheckerTaskTimerTask that checks for good/bad up/downloader. PeerConnectionIn PeerConnectionOut PeerCoordinatorCoordinates what peer does what. PeerCoordinatorSetHmm, 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. PeerIDStore the address information about a peer. PeerMonitorTask Deprecated.unused, for command line client only, commented out in Snark.java PeerState PieceThis class is used solely by PeerCoordinator. RequestHolds all information needed for a partial piece request. SnarkMain Snark program startup class. SnarkManagerManage multiple snarks SnarkShutdown Deprecated.unused StaticSnarkMain snark startup class for staticly linking with gcj. StorageMaintains pieces on disk. TrackerA structure for known trackers TrackerClientInforms metainfo tracker of events and gets new peers for peer coordinator. TrackerInfoThe data structure for the tracker response. UpdateHandlerHandles the request to update the router by firing up a magnet. UpdateRunnerThe downloader for router signed updates. URIUtilURI Holder. WebPeerBEP 19.
Exception Summary Exception Description PeerAcceptor.ProtocolExceptionA unique exception so we can tell the ConnectionAcceptor about non-BT connections Snark.RouterExceptionA unique exception class to blame the router that can be caught by SnarkManager