use std::fmt;
use crate::manifold::{client, stream};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Error {
Blocked,
Unavailable,
Capacity,
Protocol,
}
pub trait Classify: fmt::Debug {
fn kind(&self) -> Error;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Reset {
Cancelled,
Refused,
Internal,
Other,
ResourceExhausted,
InadequateSecurity,
}
#[derive(Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum Shutdown {
Clean,
Failed,
}
const _: () = assert!(core::mem::size_of::<Shutdown>() == core::mem::size_of::<bool>());
const _: () = assert!(core::mem::align_of::<Shutdown>() == core::mem::align_of::<bool>());
pub enum Response<C: client::Connection + ?Sized> {
Head {
message: C::Message,
fields: C::Fields,
selection: C::Selection,
section: stream::Section,
},
Data {
message: C::Message,
data: C::Data,
},
Reset {
stream: C::Key,
reason: Reset,
},
GoAway {
boundary: C::GoAway,
shutdown: Shutdown,
},
}