holochain_integrity_types/
rate_limit.rsuse holochain_serialized_bytes::prelude::*;
use crate::{Create, CreateLink, Delete, Entry, Update};
#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, SerializedBytes, Debug)]
#[cfg_attr(
feature = "fuzzing",
derive(arbitrary::Arbitrary, proptest_derive::Arbitrary)
)]
pub enum WeighInput {
Link(CreateLink<()>),
Create(Create<()>, Entry),
Update(Update<()>, Entry),
Delete(Delete<()>),
}
pub type RateBucketId = u8;
pub type RateUnits = u8;
pub type RateBytes = u8;
pub type RateBucketCapacity = u32;
#[derive(
Debug,
Clone,
serde::Serialize,
serde::Deserialize,
PartialEq,
Eq,
SerializedBytes,
Hash,
PartialOrd,
Ord,
)]
#[cfg_attr(
feature = "fuzzing",
derive(arbitrary::Arbitrary, proptest_derive::Arbitrary)
)]
#[allow(missing_docs)]
pub struct RateWeight {
pub bucket_id: RateBucketId,
pub units: RateUnits,
}
impl Default for RateWeight {
fn default() -> Self {
Self {
bucket_id: 255,
units: 0,
}
}
}
#[derive(
Debug,
Clone,
serde::Serialize,
serde::Deserialize,
PartialEq,
Eq,
SerializedBytes,
Hash,
PartialOrd,
Ord,
)]
#[cfg_attr(
feature = "fuzzing",
derive(arbitrary::Arbitrary, proptest_derive::Arbitrary)
)]
#[allow(missing_docs)]
pub struct EntryRateWeight {
pub bucket_id: RateBucketId,
pub units: RateUnits,
pub rate_bytes: RateBytes,
}
impl Default for EntryRateWeight {
fn default() -> Self {
Self {
bucket_id: 255,
units: 0,
rate_bytes: 0,
}
}
}
impl From<EntryRateWeight> for RateWeight {
fn from(w: EntryRateWeight) -> Self {
Self {
bucket_id: w.bucket_id,
units: w.units,
}
}
}