use crate::*;
#[derive(Resource, Default)]
pub struct ClientMessages {
pub input: Vec<Vec<u8>>,
pub output: Vec<(u8, Vec<u8>)>,
}
impl Direction for ClientToServer {
type Reverse = ServerToClient;
type NetRes = ClientMessages;
fn receive_messages(
net: &mut Self::NetRes,
world: &mut World,
handlers: &Handlers<Self::Reverse>,
_: &[u8],
) {
for b in net.input.drain(..) {
handlers.process(world, Identity::Server, &b);
}
}
fn send_messages(net: &mut Self::NetRes, msgs: std::vec::Drain<(BufferKey, Vec<u8>)>) {
for (BufferKey { channel, rule: _ }, buf) in msgs {
net.output.push((channel, buf));
}
}
}
#[derive(Resource, Default)]
pub struct ServerMessages {
pub input: Vec<(u32, Vec<u8>)>,
pub output: Vec<(u8, SendRule, Vec<u8>)>,
}
impl Direction for ServerToClient {
type Reverse = ClientToServer;
type NetRes = ServerMessages;
fn receive_messages(
net: &mut Self::NetRes,
world: &mut World,
handlers: &Handlers<Self::Reverse>,
_: &[u8],
) {
for (client_id, b) in net.input.drain(..) {
handlers.process(world, Identity::Client(client_id), &b);
}
}
fn send_messages(net: &mut Self::NetRes, msgs: std::vec::Drain<(BufferKey, Vec<u8>)>) {
for (BufferKey { channel, rule }, buf) in msgs {
net.output.push((channel, rule, buf));
}
}
}