aranya_daemon_api/service/
afc.rs

1#![cfg(feature = "afc")]
2#![cfg_attr(docsrs, doc(cfg(feature = "afc")))]
3
4pub use aranya_fast_channels::{shm, LocalChannelId as AfcLocalChannelId};
5use aranya_id::custom_id;
6use serde::{Deserialize, Serialize};
7
8use crate::{DeviceId, LabelId};
9
10custom_id! {
11    /// An globally unique AFC channel ID.
12    pub struct AfcChannelId;
13}
14
15/// A serialized command for AFC.
16pub type AfcCtrl = Box<[u8]>;
17
18/// AFC shared-memory info.
19#[derive(Clone, Debug, Serialize, Deserialize)]
20pub struct AfcShmInfo {
21    pub path: Box<shm::Path>,
22    pub max_chans: usize,
23}
24
25/// Information returned when creating an AFC send channel.
26#[derive(Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
27pub struct AfcSendChannelInfo {
28    pub ctrl: AfcCtrl,
29    pub local_channel_id: AfcLocalChannelId,
30    pub channel_id: AfcChannelId,
31}
32
33/// Information returned when receiving an AFC receive channel.
34#[derive(Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
35pub struct AfcReceiveChannelInfo {
36    pub local_channel_id: AfcLocalChannelId,
37    pub channel_id: AfcChannelId,
38    pub label_id: LabelId,
39    pub peer_id: DeviceId,
40}