Skip to main content

Crate steamroom_client

Crate steamroom_client 

Source
Expand description

High-level Steam depot download orchestration and delta patching.

Built on steamroom for protocol-level operations, this crate handles the full download lifecycle:

§Example

use steamroom::depot::{DepotId, DepotKey};
use steamroom::cdn::{CdnClient, CdnServerPool};
use steamroom::cdn::server::CdnServer;
use steamroom_client::download::{CdnChunkFetcher, DepotJob};
use steamroom_client::event::DownloadEvent;

let (event_tx, mut event_rx) = tokio::sync::mpsc::unbounded_channel();

let job = DepotJob::builder()
    .depot_id(DepotId(481))
    .depot_key(depot_key)
    .install_dir("/tmp/spacewar".into())
    .verify(true)
    .event_sender(event_tx)
    .build()
    .expect("missing required fields");

let fetcher = CdnChunkFetcher::new(
    CdnClient::new().expect("http client"),
    CdnServerPool::new(cdn_servers),
    None,
);

let stats = job.download(&manifest, std::sync::Arc::new(fetcher)).await
    .expect("download failed");
println!("downloaded {} files ({} bytes)", stats.files_completed, stats.bytes_downloaded);

Modules§

credentials
Saved login token storage.
depot_config
Installed depot/manifest tracking for delta updates.
download
Pipelined download orchestration, file filtering, and retry logic.
event
Download progress events for UI integration.
manifest
Manifest cache to avoid redundant CDN fetches.