libsignal_protocol/
session_record.rs

1use crate::{raw_ptr::Raw, ContextInner, SessionState};
2use std::rc::Rc;
3
4/// The serialized state of a session.
5#[derive(Debug, Clone)]
6pub struct SessionRecord {
7    pub(crate) raw: Raw<sys::session_record>,
8    pub(crate) ctx: Rc<ContextInner>,
9}
10
11impl SessionRecord {
12    /// Get the state.
13    pub fn state(&self) -> SessionState {
14        unsafe {
15            let raw = sys::session_record_get_state(self.raw.as_ptr());
16            assert!(!raw.is_null());
17            SessionState {
18                raw: Raw::copied_from(raw),
19                _ctx: Rc::clone(&self.ctx),
20            }
21        }
22    }
23}
24
25impl_serializable!(
26    SessionRecord,
27    session_record_serialize,
28    session_record_deserialize
29);