bevy_connect 0.18.6

Connectivity via TCP sessions
Documentation
use bevy_ecs::message::Message as BevyMessage;

use crate::Message;
use crate::ClientId;
use std::marker::PhantomData;

/// This event happens when a new connection/session is started. It does not
/// trigger on promotion, even if that reconnects new sockets.
#[derive(BevyMessage)]
pub struct SessionConnectedEvent<T: Message> {
    pub(crate) _t: PhantomData<T>,
}

/// This event happens when a session is closed. It does not trigger on
/// promotion, even if that reconnects new sockets.
#[derive(BevyMessage)]
pub struct SessionDisconnectedEvent<T: Message> {
    pub(crate) _t: PhantomData<T>,
}

/// This event is broadcasted when a new client joins.
#[derive(BevyMessage)]
pub struct ClientJoined<T: Message> {
    pub client: ClientId,
    pub(crate) _t: PhantomData<T>,
}

/// This event is broadcasted when a client leaves.
#[derive(BevyMessage)]
pub struct ClientLeft<T: Message> {
    pub client: ClientId,
    pub(crate) _t: PhantomData<T>,
}

/// This event is triggered when a new message arrived from the network.
/// The server automatically repeats this message to the other clients when the
/// receiver is the server.
#[derive(BevyMessage)]
pub struct MessageReceivedEvent<T: Message> {
    pub message: Box<T>,
    pub(crate) _t: PhantomData<T>,
}