1use rkyv::{Archive, Deserialize, Serialize};
2
3use crate::GuestResourceId;
4
5#[repr(u8)]
7#[derive(Debug, Copy, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
8#[rkyv(bytecheck())]
9pub enum NetProtocol {
10 Quic = 0,
12 Http = 1,
14 Https = 2,
16}
17
18#[derive(Debug, Clone, PartialEq, Archive, Serialize, Deserialize)]
20#[rkyv(bytecheck())]
21pub struct NetCreateListener {
22 pub protocol: NetProtocol,
24 pub domain: String,
26 pub port: u16,
28 pub tls: Option<GuestResourceId>,
30}
31
32#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
34#[rkyv(bytecheck())]
35pub struct NetCreateListenerReply {
36 pub handle: GuestResourceId,
38}
39
40#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
42#[rkyv(bytecheck())]
43pub struct NetAccept {
44 pub handle: GuestResourceId,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
50#[rkyv(bytecheck())]
51pub struct NetAcceptReply {
52 pub reader: GuestResourceId,
54 pub writer: GuestResourceId,
56 pub remote_addr: String,
58}
59
60#[derive(Debug, Clone, PartialEq, Archive, Serialize, Deserialize)]
62#[rkyv(bytecheck())]
63pub struct NetConnect {
64 pub protocol: NetProtocol,
66 pub domain: String,
68 pub port: u16,
70 pub tls: Option<GuestResourceId>,
72}
73
74#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
76#[rkyv(bytecheck())]
77pub struct NetConnectReply {
78 pub reader: GuestResourceId,
80 pub writer: GuestResourceId,
82 pub remote_addr: String,
84}