use aeronet::io::connection::{DisconnectReason, Disconnected};
use aeronet::io::{Session, SessionEndpoint};
use aeronet_replicon::client::AeronetRepliconClient;
use aeronet_transport::TransportConfig;
use crate::prelude::*;
pub fn set_config(mut q: Query<&mut TransportConfig, Added<TransportConfig>>) {
for mut q in &mut q {
q.max_memory_usage = 8_388_608; // 8 MiB
}
}
pub fn on_connecting(
trigger: On<Add, SessionEndpoint>,
names: Query<&Name>,
mut commands: Commands,
) {
let entity = trigger.event_target();
let name = names.get(entity).unwrap();
info!("{name} is connecting");
commands.entity(entity).insert(AeronetRepliconClient);
}
pub fn on_connected(trigger: On<Add, Session>, names: Query<&Name>) {
let entity = trigger.event_target();
let name = names.get(entity).unwrap();
info!("{name} is connected");
}
pub fn on_disconnected(trigger: On<Disconnected>, names: Query<&Name>) {
let session = trigger.event_target();
let name = names.get(session).unwrap();
match &trigger.reason {
DisconnectReason::ByUser(reason) => {
info!(?name, ?reason, "session disconnected by user");
}
DisconnectReason::ByPeer(reason) => {
info!(?name, ?reason, "session disconnected by peer");
}
DisconnectReason::ByError(err) => {
warn!(?name, "session disconnected due to error: {err:?}");
}
}
}
#[cfg(target_family = "wasm")]
pub fn websocket_config() -> aeronet_websocket::client::ClientConfig {
aeronet_websocket::client::ClientConfig::default()
}
#[cfg(not(target_family = "wasm"))]
pub fn websocket_config() -> aeronet_websocket::client::ClientConfig {
aeronet_websocket::client::ClientConfig::builder().with_no_cert_validation()
}