Skip to main content

selium_abi/
session.rs

1use rkyv::{Archive, Deserialize, Serialize};
2
3use crate::{Capability, GuestUint};
4
5/// Request to create a new session.
6#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
7#[rkyv(bytecheck())]
8pub struct SessionCreate {
9    /// Parent session handle.
10    pub session_id: GuestUint,
11    /// Public key to associate with the new session.
12    pub pubkey: [u8; 32],
13}
14
15/// Request to add or remove entitlements from a session.
16#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
17#[rkyv(bytecheck())]
18pub struct SessionEntitlement {
19    /// Parent session handle.
20    pub session_id: GuestUint,
21    /// Target session handle.
22    pub target_id: GuestUint,
23    /// Capability to add or remove.
24    pub capability: Capability,
25}
26
27/// Request to attach or detach a resource from a session entitlement.
28#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
29#[rkyv(bytecheck())]
30pub struct SessionResource {
31    /// Parent session handle.
32    pub session_id: GuestUint,
33    /// Target session handle.
34    pub target_id: GuestUint,
35    /// Capability being modified.
36    pub capability: Capability,
37    /// Resource handle.
38    pub resource_id: crate::GuestResourceId,
39}
40
41/// Request to remove a session.
42#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
43#[rkyv(bytecheck())]
44pub struct SessionRemove {
45    /// Parent session handle.
46    pub session_id: GuestUint,
47    /// Target session handle.
48    pub target_id: GuestUint,
49}