use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct SessionConfig {
pub(super) version: Version,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub(super) enum Version {
V1 = 1,
#[cfg(feature = "experimental-session-config")]
V2 = 2,
}
impl SessionConfig {
pub const fn version(&self) -> u8 {
self.version as u8
}
pub const fn version_1() -> Self {
SessionConfig { version: Version::V1 }
}
#[cfg(feature = "experimental-session-config")]
pub const fn version_2() -> Self {
SessionConfig { version: Version::V2 }
}
}
impl Default for SessionConfig {
fn default() -> Self {
Self::version_1()
}
}
#[cfg(test)]
mod test {
use crate::megolm::{SessionConfig, session_config::Version};
#[test]
fn version() {
assert_eq!(SessionConfig::version_1().version(), Version::V1 as u8);
#[cfg(feature = "experimental-session-config")]
assert_eq!(SessionConfig::version_2().version(), Version::V2 as u8);
}
}