use crate::events::SocketRecvEvent;
use bevy::prelude::*;
use bevy_matchbox::{prelude::MultipleChannels, MatchboxSocket};
pub type RtcSocket = MatchboxSocket<RtcSocketPlurality>;
pub type RtcSocketPlurality = MultipleChannels;
pub const UNRELIABLE_CHANNEL_INDEX: usize = 0;
pub const RELIABLE_CHANNEL_INDEX: usize = 1;
pub fn common_socket_reader(
mut socket: ResMut<RtcSocket>,
mut event_wtr: EventWriter<SocketRecvEvent>,
) {
let messages = socket
.channel_mut(RELIABLE_CHANNEL_INDEX)
.receive()
.into_iter()
.chain(socket.channel_mut(UNRELIABLE_CHANNEL_INDEX).receive())
.map(SocketRecvEvent)
.collect::<Vec<_>>();
trace!("Received {} total messages", messages.len());
event_wtr.send_batch(messages);
}