use std::sync::Arc;
use std::time::Instant;
#[derive(Debug, Clone)]
pub struct Request {
pub request_id: u64,
pub tenant_id: u32,
pub vshard_id: u16,
pub plan: Plan,
pub deadline: Instant,
pub priority: Priority,
pub trace_id: u64,
}
#[derive(Debug)]
pub struct Response {
pub request_id: u64,
pub status: Status,
pub bytes_produced: u64,
pub watermark_lsn: u64,
pub payload: Option<Arc<[u8]>>,
}
#[derive(Debug, Clone)]
pub enum Plan {
Bytes(Arc<[u8]>),
SlabHandle { slab_id: u32, offset: u32, len: u32 },
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
#[repr(u8)]
pub enum Priority {
Critical = 0,
Interactive = 1,
Background = 2,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Status {
Ok,
Partial,
Cancelled,
DeadlineExceeded,
Error(u16),
}