use crate::{
config::*,
socket_connection_handler::Peer,
ReactiveMessagingSerializer,
};
use std::{
fmt::Debug,
sync::Arc,
};
use reactive_mutiny::prelude::advanced::{
UniZeroCopyAtomic,
ChannelUniZeroCopyAtomic,
OgreUnique,
AllocatorAtomicArray,
};
pub(crate) type SenderChannel<ItemType, const BUFFERED_MESSAGES_PER_PEER_COUNT: usize> = reactive_mutiny::uni::channels::movable::atomic::Atomic::<'static, ItemType, BUFFERED_MESSAGES_PER_PEER_COUNT, 1>;
pub(crate) type SocketProcessorUniType< const BUFFERED_MESSAGES_PER_CLIENT_COUNT: usize, MessagesType> = UniZeroCopyAtomic<MessagesType, BUFFERED_MESSAGES_PER_CLIENT_COUNT, 1, SOCKET_PROCESSOR_INSTRUMENTS>;
pub(crate) type SocketProcessorChannelType<const BUFFERED_MESSAGES_PER_CLIENT_COUNT: usize, MessagesType> = ChannelUniZeroCopyAtomic<MessagesType, BUFFERED_MESSAGES_PER_CLIENT_COUNT, 1>;
pub type SocketProcessorDerivedType<const BUFFERED_MESSAGES_PER_CLIENT_COUNT: usize, MessagesType> = OgreUnique<MessagesType, AllocatorAtomicArray<MessagesType, BUFFERED_MESSAGES_PER_CLIENT_COUNT>>;
#[derive(Debug)]
pub enum ConnectionEvent<const BUFFERED_MESSAGES_PER_PEER_COUNT: usize,
LocalPeerMessages: 'static + Send + Sync + PartialEq + Debug + ReactiveMessagingSerializer<LocalPeerMessages>> {
PeerConnected {peer: Arc<Peer<BUFFERED_MESSAGES_PER_PEER_COUNT, LocalPeerMessages>>},
PeerDisconnected {peer: Arc<Peer<BUFFERED_MESSAGES_PER_PEER_COUNT, LocalPeerMessages>>, stream_stats: Arc<reactive_mutiny::stream_executor::StreamExecutor>},
ApplicationShutdown {timeout_ms: u32},
}