#![deny(missing_docs)]
#![deny(unsafe_code)]
#![deny(warnings)]
use kitsune_p2p_types::{KOpHash, KSpace};
mod backoff;
mod pool;
mod queue;
mod respond;
mod rough_sized;
mod source;
#[cfg(any(test, feature = "test_utils"))]
pub mod test_utils;
pub use pool::*;
pub use respond::*;
pub use rough_sized::*;
pub use source::FetchSource;
#[derive(
Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, serde::Deserialize, serde::Serialize,
)]
#[cfg_attr(
feature = "fuzzing",
derive(arbitrary::Arbitrary, proptest_derive::Arbitrary)
)]
#[serde(tag = "type", content = "key", rename_all = "camelCase")]
pub enum FetchKey {
Op(KOpHash),
}
#[derive(Debug, Clone, PartialEq)]
pub struct FetchPoolPush {
pub key: FetchKey,
pub space: KSpace,
pub source: FetchSource,
pub transfer_method: TransferMethod,
pub size: Option<RoughInt>,
pub context: Option<FetchContext>,
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
derive_more::Display,
serde::Serialize,
serde::Deserialize,
)]
pub enum TransferMethod {
Publish,
Gossip,
}
#[derive(
Default,
Debug,
Clone,
Copy,
PartialEq,
Eq,
serde::Serialize,
serde::Deserialize,
derive_more::Deref,
derive_more::From,
)]
#[cfg_attr(
feature = "fuzzing",
derive(arbitrary::Arbitrary, proptest_derive::Arbitrary)
)]
pub struct FetchContext(pub u32);