alibabacloud-rum 0.1.0

Alibaba Cloud RUM SDK for native Rust applications.
Documentation
mod session;
mod view;

use uuid::Uuid;

use session::SessionState;
use view::ViewState;

#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub(crate) struct RumContextSnapshot {
    pub session_id: String,
    pub view_id: String,
    pub view_name: String,
}

pub(crate) struct RumContext {
    session: SessionState,
    view: ViewState,
}

impl RumContext {
    pub fn new() -> Self {
        Self {
            session: SessionState::new(),
            view: ViewState::initial(),
        }
    }

    pub fn snapshot(&mut self) -> RumContextSnapshot {
        self.session.touch();
        RumContextSnapshot {
            session_id: self.session.id_string(),
            view_id: self.view.id_string(),
            view_name: self.view.name().to_string(),
        }
    }

    pub fn initial_view_snapshot(&self) -> RumContextSnapshot {
        RumContextSnapshot {
            session_id: self.session.id_string(),
            view_id: self.view.id_string(),
            view_name: self.view.name().to_string(),
        }
    }
}

pub(crate) fn uuid_string(uuid: Uuid) -> String {
    uuid.hyphenated().to_string()
}