clankerdiff_protocol/server/
transport.rs1use crate::{
2 client::{ClientCommand, LocalClientMessageTransport, LocalClientTransport},
3 shared::LocalEnd,
4};
5
6use super::{ServerEvent, ServerMessage};
7use async_channel::bounded;
8
9pub type LocalServerTransport = LocalEnd<ServerEvent, ClientCommand>;
10pub type LocalServerMessageTransport = LocalEnd<ServerMessage, ClientCommand>;
11
12#[must_use]
13pub fn local_transport_pair(capacity: usize) -> (LocalClientTransport, LocalServerTransport) {
14 let (commands_tx, commands_rx) = bounded(capacity.max(1));
15 let (events_tx, events_rx) = bounded(capacity.max(1));
16 (
17 LocalEnd::new(commands_tx, events_rx),
18 LocalEnd::new(events_tx, commands_rx),
19 )
20}
21
22#[must_use]
23pub fn local_message_transport_pair(
24 capacity: usize,
25) -> (LocalClientMessageTransport, LocalServerMessageTransport) {
26 let (commands_tx, commands_rx) = bounded(capacity.max(1));
27 let (messages_tx, messages_rx) = bounded(capacity.max(1));
28 (
29 LocalEnd::new(commands_tx, messages_rx),
30 LocalEnd::new(messages_tx, commands_rx),
31 )
32}