Skip to main content

ras_browser/domain/
session.rs

1use ras_types::{AgentId, SessionId};
2use serde::{Deserialize, Serialize};
3
4use crate::domain::browser_profile::BrowserProfile;
5use crate::domain::repository::SessionMode;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
8#[serde(rename_all = "snake_case")]
9pub enum SessionState {
10    Disconnected,
11    Connecting,
12    Ready,
13    Crashed,
14    Closed,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct BrowserSession {
19    pub agent: AgentId,
20    pub session: SessionId,
21    pub mode: SessionMode,
22    pub profile: BrowserProfile,
23    pub state: SessionState,
24}
25
26impl BrowserSession {
27    #[must_use]
28    pub fn new(
29        agent: AgentId,
30        session: SessionId,
31        mode: SessionMode,
32        profile: BrowserProfile,
33    ) -> Self {
34        Self {
35            agent,
36            session,
37            mode,
38            profile,
39            state: SessionState::Disconnected,
40        }
41    }
42}