pub struct TransferConfig {Show 15 fields
pub compression_level: u32,
pub exclude_patterns: Vec<String>,
pub ssh_server_alive_interval_secs: Option<u64>,
pub ssh_control_persist_secs: Option<u64>,
pub remote_base: String,
pub retry: RetryConfig,
pub verify_artifacts: bool,
pub verify_max_size_bytes: u64,
pub max_transfer_mb: Option<u64>,
pub max_transfer_time_ms: Option<u64>,
pub bwlimit_kbps: Option<u64>,
pub estimated_bandwidth_bps: Option<u64>,
pub adaptive_compression: bool,
pub min_compression_level: u32,
pub max_compression_level: u32,
}Fields§
§compression_level: u32zstd compression level (1-19).
exclude_patterns: Vec<String>Patterns to exclude from transfer.
ssh_server_alive_interval_secs: Option<u64>SSH keepalive interval in seconds (ssh -o ServerAliveInterval=<N>).
When unset, OpenSSH defaults apply (keepalive disabled).
ssh_control_persist_secs: Option<u64>SSH ControlPersist idle timeout in seconds (ssh -o ControlPersist=<N>s).
- Unset preserves OpenSSH defaults (ControlPersist enabled by default via mux).
0disables persistence (ControlPersist=no).
remote_base: StringRemote base directory for project sync and build execution. Must be an absolute path. Defaults to /tmp/rch.
retry: RetryConfigRetry policy for transient network errors during transfer.
verify_artifacts: boolVerify artifact integrity using blake3 hashes after transfer (bd-377q).
When enabled, computes blake3 hashes of key artifacts (binaries, test outputs) on the worker after build, then verifies them locally after download. Disabled by default to avoid extra overhead.
verify_max_size_bytes: u64Maximum file size (bytes) for artifact verification (bd-377q).
Files larger than this limit are skipped during verification to avoid excessive I/O. Defaults to 100MB.
max_transfer_mb: Option<u64>Maximum transfer size in MB before skipping remote execution.
When set, runs rsync --dry-run --stats to estimate transfer size.
If the estimated size exceeds this threshold, remote offload is skipped
and the command runs locally. Set to None (default) to disable.
max_transfer_time_ms: Option<u64>Maximum estimated transfer time in milliseconds before skipping remote.
Uses estimated_bandwidth_bps (or measured link speed) to calculate
expected transfer time. If it exceeds this threshold, remote offload
is skipped. Set to None (default) to disable.
bwlimit_kbps: Option<u64>Bandwidth limit for rsync in KB/s.
Passed as rsync --bwlimit=<N> to limit transfer speed and prevent
network saturation. Set to None or 0 (default) for unlimited.
estimated_bandwidth_bps: Option<u64>Estimated link bandwidth in bytes per second.
Used for transfer time estimation when max_transfer_time_ms is set.
If not provided, defaults to 10 MB/s (10485760 bytes/sec).
adaptive_compression: boolEnable adaptive zstd compression based on transfer size (bd-243w).
When enabled, automatically selects compression level based on estimated payload size:
- < 10MB: level 1 (fast, minimal compression)
- 10-200MB: level 3 (balanced, default)
-
200MB: level 7 (slower, better compression)
When disabled (default), uses the fixed compression_level setting.
min_compression_level: u32Minimum compression level for adaptive mode (bd-243w).
Even in adaptive mode, compression level won’t go below this. Defaults to 1.
max_compression_level: u32Maximum compression level for adaptive mode (bd-243w).
Even in adaptive mode, compression level won’t exceed this. Defaults to 9 (avoids CPU-intensive levels 10+).
Implementations§
Source§impl TransferConfig
impl TransferConfig
Sourcepub fn select_compression_level(&self, estimated_bytes: Option<u64>) -> u32
pub fn select_compression_level(&self, estimated_bytes: Option<u64>) -> u32
Select compression level based on estimated transfer size (bd-243w).
When adaptive compression is enabled, selects an appropriate level based on payload size:
- < 10MB: level 1 (fast, minimal compression)
- 10-200MB: level 3 (balanced)
-
200MB: level 7 (better compression)
The result is clamped between min_compression_level and max_compression_level.
When adaptive compression is disabled, returns the fixed compression_level.
Trait Implementations§
Source§impl Clone for TransferConfig
impl Clone for TransferConfig
Source§fn clone(&self) -> TransferConfig
fn clone(&self) -> TransferConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more