use snafu::Snafu;
use crate::{
quic::{ConnectionError, StreamError},
stream_id::StreamId,
};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub(super)))]
pub enum RegisterError {
#[snafu(display("session already registered for {session_id}"))]
AlreadyRegistered { session_id: StreamId },
#[snafu(display("session registry lock poisoned"))]
RegistryPoisoned,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Snafu)]
#[snafu(visibility(pub))]
pub enum OpenStreamError {
#[snafu(display("failed to open QUIC stream"))]
Open { source: ConnectionError },
#[snafu(display("failed to write stream routing header"))]
WriteHeader { source: StreamError },
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Snafu)]
#[snafu(display("webtransport session closed"))]
pub struct Closed;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub(super)))]
pub enum DatagramError {
#[snafu(display("datagrams are not yet supported"))]
Unsupported,
}