ras_browser/domain/
session.rs1use 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}