use rkyv::{Archive, Deserialize, Serialize};
use crate::GuestResourceId;
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
#[rkyv(bytecheck())]
pub enum NetProtocol {
Quic = 0,
Http = 1,
Https = 2,
}
#[derive(Debug, Clone, PartialEq, Archive, Serialize, Deserialize)]
#[rkyv(bytecheck())]
pub struct NetCreateListener {
pub protocol: NetProtocol,
pub domain: String,
pub port: u16,
pub tls: Option<GuestResourceId>,
}
#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
#[rkyv(bytecheck())]
pub struct NetCreateListenerReply {
pub handle: GuestResourceId,
}
#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
#[rkyv(bytecheck())]
pub struct NetAccept {
pub handle: GuestResourceId,
}
#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
#[rkyv(bytecheck())]
pub struct NetAcceptReply {
pub reader: GuestResourceId,
pub writer: GuestResourceId,
pub remote_addr: String,
}
#[derive(Debug, Clone, PartialEq, Archive, Serialize, Deserialize)]
#[rkyv(bytecheck())]
pub struct NetConnect {
pub protocol: NetProtocol,
pub domain: String,
pub port: u16,
pub tls: Option<GuestResourceId>,
}
#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
#[rkyv(bytecheck())]
pub struct NetConnectReply {
pub reader: GuestResourceId,
pub writer: GuestResourceId,
pub remote_addr: String,
}