#[repr(u8)]
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
pub enum SocketKind {
Invalid = 0,
Dynamic,
BunSocketTcp,
BunSocketTls,
BunListenerTcp,
BunListenerTls,
HttpClient,
HttpClientTls,
WsClientUpgrade,
WsClientUpgradeTls,
WsClient,
WsClientTls,
Postgres,
PostgresTls,
Mysql,
MysqlTls,
Valkey,
ValkeyTls,
SpawnIpc,
UwsHttp,
UwsHttpTls,
UwsWs,
UwsWsTls,
}
impl SocketKind {
#[inline]
pub fn from_u8(v: u8) -> Self {
match v {
0 => SocketKind::Invalid,
1 => SocketKind::Dynamic,
2 => SocketKind::BunSocketTcp,
3 => SocketKind::BunSocketTls,
4 => SocketKind::BunListenerTcp,
5 => SocketKind::BunListenerTls,
6 => SocketKind::HttpClient,
7 => SocketKind::HttpClientTls,
8 => SocketKind::WsClientUpgrade,
9 => SocketKind::WsClientUpgradeTls,
10 => SocketKind::WsClient,
11 => SocketKind::WsClientTls,
12 => SocketKind::Postgres,
13 => SocketKind::PostgresTls,
14 => SocketKind::Mysql,
15 => SocketKind::MysqlTls,
16 => SocketKind::Valkey,
17 => SocketKind::ValkeyTls,
18 => SocketKind::SpawnIpc,
19 => SocketKind::UwsHttp,
20 => SocketKind::UwsHttpTls,
21 => SocketKind::UwsWs,
22 => SocketKind::UwsWsTls,
_ => unreachable!("invalid SocketKind discriminant {v} from C"),
}
}
#[inline]
pub const fn is_tls(self) -> bool {
matches!(
self,
SocketKind::BunSocketTls
| SocketKind::BunListenerTls
| SocketKind::HttpClientTls
| SocketKind::WsClientUpgradeTls
| SocketKind::WsClientTls
| SocketKind::PostgresTls
| SocketKind::MysqlTls
| SocketKind::ValkeyTls
| SocketKind::UwsHttpTls
| SocketKind::UwsWsTls
)
}
}
#[unsafe(no_mangle)]
pub(crate) static BUN_SOCKET_KIND_DYNAMIC: u8 = SocketKind::Dynamic as u8;
#[unsafe(no_mangle)]
pub(crate) static BUN_SOCKET_KIND_UWS_HTTP: u8 = SocketKind::UwsHttp as u8;
#[unsafe(no_mangle)]
pub(crate) static BUN_SOCKET_KIND_UWS_HTTP_TLS: u8 = SocketKind::UwsHttpTls as u8;
#[unsafe(no_mangle)]
pub(crate) static BUN_SOCKET_KIND_UWS_WS: u8 = SocketKind::UwsWs as u8;
#[unsafe(no_mangle)]
pub(crate) static BUN_SOCKET_KIND_UWS_WS_TLS: u8 = SocketKind::UwsWsTls as u8;