pub mod circuit_breaker;
pub mod engine;
pub mod error;
pub mod fill_session;
pub mod metrics;
pub mod origin;
pub mod origin_probe;
pub mod origin_range;
mod outboard_cache;
pub mod policy;
pub mod probe_hold;
pub mod range_pull;
pub mod ranged_store;
pub mod retry;
pub mod serve_store;
pub use circuit_breaker::{
Admission, BreakerState, Clock, ManualClock, OriginBreaker, OriginOutcome, SystemClock,
};
pub use decdn_bao_range::CHUNK_GROUP_BYTES;
pub use engine::{
CacheEngine, EvictionCandidates, EvictionPreview, OriginHeldReport, OriginPresence,
PresentRanges, ServeAudit,
};
pub use error::{
CacheError, CacheResult, ErrorChain, OriginError, OriginPullError, SupportedEncoding,
};
pub use fill_session::{
Demand, DemandSlot, DownstreamWatch, FillClaim, FillError, FillRegistry, FillSession, Frontier,
HashOutboard, ObserverLease, SessionOutboardReader,
};
pub use iroh_blobs::Hash;
pub use metrics::CacheMetrics;
pub use origin::{
FilesystemOrigin, HttpOrigin, Origin, OriginFetch, OriginRangeFetch, OriginRangeRequest,
OutboardFetch, S3Credentials, S3Origin, S3OriginConfig,
};
pub use origin_range::{MAX_CONCURRENT_RANGE_PULLS, OriginRangeWire, RANGE_PULL_WINDOW_BYTES};
pub use policy::{
AdmissionContext, AdmissionDecision, AdmissionPolicy, AlwaysAdmit, EvictionContext,
EvictionPlan, EvictionPolicy, FrequencyEstimator, LruEviction, Segment,
};
pub use probe_hold::{
PROBE_HOLD_DURATION, PROBE_HOLD_MARGIN, PROBE_SLASH_WINDOW, ProbeHoldOutcome,
};
pub use ranged_store::NodeRangedStore;
pub use serve_store::{EncodeStream, PresentRangeWatch, ServeStore};
pub use decdn_config_types::Hash as LeafHash;
pub use decdn_config_types::{
Bytes, CircuitBreakerPolicy, DEFAULT_MAX_PROBE_HOLDS, DEFAULT_USER_AGENT, DecompressMode,
DeniedHashes, HashParseError, OriginKind, OriginUrl, PinDiff, PinnedHashes, RetryPolicy,
parse_origin_url, redact_for_log,
};
#[must_use]
pub const fn to_store_hash(h: decdn_config_types::Hash) -> Hash {
Hash::from_bytes(h.to_bytes())
}
#[must_use]
#[allow(clippy::missing_const_for_fn)] pub fn from_store_hash(h: Hash) -> decdn_config_types::Hash {
decdn_config_types::Hash::from_bytes(*h.as_bytes())
}
#[cfg(test)]
#[allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)] mod hash_bridge_tests;