irontide-engine 1.0.2

IronTide engine runtime: the per-torrent actor, peer I/O loops, and the non-leaf engine infrastructure (disk I/O, tracker management, alerts, streaming, extensions, SSL) — the renamed irontide-torrent-actor
Documentation
//! `IronTide` engine runtime: the per-torrent actor, the per-peer I/O loops, and
//! the non-leaf engine infrastructure (disk I/O, tracker management, alerts,
//! streaming, extensions, SSL).
//!
//! Renamed from the ROADMAP's tentative `irontide-torrent-actor` at the M244b
//! eng-review (Option 3 hybrid + rename). Sits above the pure leaves
//! (`irontide-engine-support`, `irontide-session-types`, `irontide-peer-io`,
//! `irontide-settings`) and below session-core (`irontide-session`), which
//! consumes this crate's public surface via `irontide_engine::…`.

// M244b engine split: the moved actor / peer / infra files reach the descended
// leaves (`irontide-engine-support`, M244b commit 1) and the M244a session-type
// vocabulary (`ban` / `ip_filter`) at their original `crate::` paths. Re-export
// each at this crate root so those ~600 in-file references resolve zero-churn.
// `error` is split out because the `pub use error::{…}` below consumes it.
pub(crate) use irontide_engine_support::error;
pub(crate) use irontide_engine_support::{i2p, rate_limiter, slot_tuner, stats, transport};
pub(crate) use irontide_session_types::ban;
// `ip_filter` is referenced only by engine's inline unit tests (production
// code takes `irontide_session_types::SharedIpFilter` directly); gate the
// re-export so the non-test lib build doesn't flag it unused under `-D warnings`.
#[cfg(test)]
pub(crate) use irontide_session_types::ip_filter;

/// Session alert stream: categories, kinds, and the broadcast surface.
pub mod alert;
/// Blocking task spawner for disk + hashing offload.
pub mod blocking_spawner;
pub(crate) mod buffer_pool;
pub(crate) mod choker;
#[allow(dead_code)] // M73: retained for endgame pathway and future use
pub(crate) mod chunk_mask;
/// Disk I/O manager: configuration, handles, and statistics.
pub mod disk;
/// Pluggable disk I/O backend trait and implementations.
pub mod disk_backend;
#[allow(dead_code)] // Wired in during Task 2 (DSCP wiring to session/torrent actors).
pub(crate) mod dscp;
pub(crate) mod end_game;
/// Extension-protocol (BEP 10) plugin surface.
pub mod extension;
/// Parallel SHA-1/SHA-256 piece-hashing pool.
pub mod hash_pool;
/// io_uring disk I/O backend (Linux-only, feature-gated).
#[cfg(all(target_os = "linux", feature = "io-uring"))]
pub(crate) mod io_uring_backend;
/// IOCP disk I/O backend (Windows-only, feature-gated).
#[cfg(all(target_os = "windows", feature = "iocp"))]
pub(crate) mod iocp_backend;
pub(crate) mod lt_trackers;
/// BEP 9 metadata download coordinator.
pub mod metadata;
pub(crate) mod peer;
pub(crate) mod peer_adder;
pub(crate) mod peer_backpressure;
pub(crate) mod peer_connection;
#[allow(dead_code)] // Wired in during Task 2 (BEP 40 peer eviction integration).
pub(crate) mod peer_priority;
pub(crate) mod peer_shared;
/// Per-torrent peer pipeline state machine.
pub mod peer_state;
pub(crate) mod peer_states;
pub(crate) mod peer_tasks;
pub(crate) mod pex;
pub(crate) mod piece_reservation;
#[allow(dead_code)] // M73: retained for endgame pathway and future use
pub(crate) mod piece_selector;
pub(crate) mod pipeline;
/// Proxy configuration (SOCKS5 / HTTP) for peer + tracker connections.
#[allow(dead_code)] // Wired in during Step 5 (proxy integration).
pub mod proxy;
/// SSL/TLS peer connection manager.
#[allow(dead_code)] // Wired in during Phase 3c (session SSL integration).
pub mod ssl_manager;
/// Sequential / streaming file read surface.
pub mod streaming;
pub(crate) mod super_seed;
pub(crate) mod timed_lock;
/// The per-torrent actor handle and its command surface.
pub mod torrent;
pub(crate) mod torrent_dispatch;
pub(crate) mod torrent_peer_handler;
pub(crate) mod torrent_peers;
pub(crate) mod torrent_state;
pub(crate) mod torrent_verify;
/// Per-torrent tracker manager: announce scheduling + status.
pub mod tracker_manager;
mod types;
// M218: `url_guard` is `pub` so the GUI's URL-tab fetch can share the same SSRF
// redirect policy / validators as the tracker + web-seed HTTP code.
/// SSRF-safe URL validation + redirect policy for user-supplied URLs.
pub mod url_guard;
/// Verify-Before-Download: fast file-size pre-scan (M205).
pub mod verify_before_download;
pub(crate) mod web_seed;

pub use alert::{Alert, AlertCategory, AlertKind, AlertStream};
pub use choker::{ChokingAlgorithm, SeedChokingAlgorithm};
pub use disk::{DiskConfig, DiskHandle, DiskJobFlags, DiskManagerHandle, DiskStats};
pub use disk_backend::{DisabledDiskIo, DiskIoBackend, DiskIoStats};
pub use error::{Error, Result};
pub use extension::ExtensionPlugin;
pub use hash_pool::{HashJob, HashPool, HashResult};
pub use peer_state::PeerSource;
pub use peer_states::PeerPipelineSnapshot;
pub use piece_selector::build_wanted_pieces;
pub use proxy::{ProxyConfig, ProxyType};
pub use streaming::FileStream;
pub use torrent::TorrentHandle;
pub use tracker_manager::{TrackerInfo, TrackerStatus};
pub use types::TorrentCommand;