alibabacloud-rum 0.1.0

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

use serde_json::Value;

use crate::context::RumContextSnapshot;

pub use custom::{
    CustomEvent, CustomException, CustomLog, CustomLogLevel, CustomResource,
    CustomResourceMeasuring, CustomResourceType,
};
pub(crate) use custom::{CustomEventData, CustomExceptionEvent};
pub(crate) use resource::{PendingResource, ResourceEvent};
pub(crate) use view::ViewEvent;

#[derive(Clone, Debug)]
pub(crate) enum RumEvent {
    Custom(CustomEventData),
    Exception(CustomExceptionEvent),
    Resource(Box<ResourceEvent>),
    View(ViewEvent),
}

impl RumEvent {
    pub fn context(&self) -> &RumContextSnapshot {
        match self {
            Self::Custom(event) => &event.context,
            Self::Exception(event) => &event.context,
            Self::Resource(event) => &event.context,
            Self::View(event) => &event.context,
        }
    }

    pub fn to_json(&self) -> Value {
        match self {
            Self::Custom(event) => event.to_json(),
            Self::Exception(event) => event.to_json(),
            Self::Resource(event) => event.to_json(),
            Self::View(event) => event.to_json(),
        }
    }
}