use std::net::SocketAddr;
use moqtap_codec::dispatch::{
AnyControlMessage, AnyDatagramHeader, AnyFetchHeader, AnyObjectHeader, AnySubgroupHeader,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ProxySide {
ClientToProxy,
ProxyToRelay,
RelayToProxy,
ProxyToClient,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct SessionId(pub u64);
#[derive(Debug, Clone)]
pub enum DataStreamHeaderKind {
Subgroup(AnySubgroupHeader),
Fetch(AnyFetchHeader),
}
#[derive(Debug, Clone)]
pub enum ProxyEvent {
SessionStarted {
session_id: SessionId,
client_addr: SocketAddr,
client_transport: String,
},
SetupMessage {
session_id: SessionId,
side: ProxySide,
message: AnyControlMessage,
},
ControlMessage {
session_id: SessionId,
side: ProxySide,
message: AnyControlMessage,
},
DataStreamHeader {
session_id: SessionId,
side: ProxySide,
header: DataStreamHeaderKind,
},
ObjectHeader {
session_id: SessionId,
side: ProxySide,
header: AnyObjectHeader,
},
Datagram {
session_id: SessionId,
side: ProxySide,
header: AnyDatagramHeader,
payload_len: usize,
},
BiStreamOpened {
session_id: SessionId,
side: ProxySide,
},
UniStreamOpened {
session_id: SessionId,
side: ProxySide,
},
ParseError {
session_id: SessionId,
side: ProxySide,
error: String,
},
StreamClosed {
session_id: SessionId,
side: ProxySide,
},
SessionEnded {
session_id: SessionId,
reason: String,
},
}