hydroflow 0.10.0

Hydro's low-level dataflow runtime and IR
Documentation
mod serialization;

#[cfg(test)]
mod test;

use lattices::map_union::MapUnionHashMap;
use lattices::set_union::SetUnionHashSet;
use lattices::{DomPair, Max, Point, WithBot};
pub use serialization::KvsRequestDeserializer;

use crate::buffer_pool::AutoReturnBuffer;

pub type NodeId = usize;

pub type MyLastWriteWins<const SIZE: usize> =
    DomPair<Max<u128>, WithBot<Point<AutoReturnBuffer<SIZE>, ()>>>;
pub type MySetUnion = SetUnionHashSet<(NodeId, usize)>;

#[derive(Clone, Debug)]
pub enum KvsRequest<const SIZE: usize> {
    Put {
        key: u64,
        value: AutoReturnBuffer<SIZE>,
    },
    Get {
        key: u64,
    },
    Gossip {
        map: MapUnionHashMap<u64, MyLastWriteWins<SIZE>>,
    },
    Delete {
        key: u64,
    },
}

#[derive(Clone, Debug)]
pub enum KvsResponse<const SIZE: usize> {
    _PutResponse {
        key: u64,
    },
    #[expect(dead_code, reason = "benchmark discards responses")]
    GetResponse {
        key: u64,
        reg: MyLastWriteWins<SIZE>,
    },
}