//! Torrent metadata, peer-wire framing, and DHT message helpers. #![forbid(unsafe_code)] /// Internal torrent bencode value parsing and encoding helpers. mod bencode; /// Distributed-hash-table message models and compact-node helpers. mod dht; /// Torrent metadata/bootstrap parsing and derivation helpers. mod metadata; /// Parsed torrent models and runtime-adjacent helper methods. mod model; /// `BitTorrent` peer-wire framing and metadata-exchange helpers. mod peer_wire; /// Shared torrent-local decoding and conversion helpers. mod utils; #[cfg(test)] use self::dht::compact::{decode_compact_dht_nodes, encode_compact_dht_nodes}; pub use self::dht::{ DhtAnnouncePeerQueryModel, DhtCompactNodeModel, DhtErrorModel, DhtFindNodeQueryModel, DhtFindNodeResponseModel, DhtGetPeersQueryModel, DhtGetPeersResponseModel, DhtMessageBody, DhtMessageModel, DhtPingQueryModel, DhtPingResponseModel, DhtQueryModel, DhtResponseModel, }; pub use self::metadata::{parse_torrent_bootstrap, parse_torrent_metadata}; pub use self::model::{ TorrentBootstrapModel, TorrentFileEntryModel, TorrentHashModel, TorrentInfoModel, TorrentMetadataModel, TorrentPeerModel, TorrentPieceModel, TorrentTrackerModel, }; pub use self::peer_wire::{ PEER_WIRE_METADATA_PIECE_SIZE, PeerWireBitfieldModel, PeerWireBlockRequestModel, PeerWireExtensionHandshakeModel, PeerWireExtensionMessageModel, PeerWireFrameHeaderModel, PeerWireHandshakeModel, PeerWireMessageKind, PeerWireMessageModel, PeerWireMetadataMessageModel, PeerWireMetadataMessageType, PeerWirePieceBlockModel, PeerWireUnknownMessageModel, TorrentMessageModel, }; #[cfg(test)] mod tests;