naia_shared/messages/channels/receivers/
channel_receiver.rs1use naia_serde::{BitReader, SerdeErr};
2use naia_socket_shared::Instant;
3
4use crate::messages::channels::senders::request_sender::LocalRequestId;
5use crate::{
6 messages::{message_container::MessageContainer, message_kinds::MessageKinds},
7 world::remote::entity_waitlist::EntityWaitlist,
8 LocalEntityAndGlobalEntityConverter, LocalResponseId,
9};
10
11pub trait ChannelReceiver<P>: Send + Sync {
12 fn receive_messages(
14 &mut self,
15 message_kinds: &MessageKinds,
16 now: &Instant,
17 entity_waitlist: &mut EntityWaitlist,
18 converter: &dyn LocalEntityAndGlobalEntityConverter,
19 ) -> Vec<P>;
20}
21
22pub trait MessageChannelReceiver: ChannelReceiver<MessageContainer> {
23 fn read_messages(
25 &mut self,
26 message_kinds: &MessageKinds,
27 entity_waitlist: &mut EntityWaitlist,
28 converter: &dyn LocalEntityAndGlobalEntityConverter,
29 reader: &mut BitReader,
30 ) -> Result<(), SerdeErr>;
31
32 fn receive_requests_and_responses(
33 &mut self,
34 ) -> (
35 Vec<(LocalResponseId, MessageContainer)>,
36 Vec<(LocalRequestId, MessageContainer)>,
37 );
38}