codetether_agent/browser/
service.rs1use super::BrowserSession;
2use once_cell::sync::Lazy;
3use parking_lot::Mutex;
4
5static BROWSER_SERVICE: Lazy<BrowserService> = Lazy::new(BrowserService::default);
6
7pub fn browser_service() -> &'static BrowserService {
8 &BROWSER_SERVICE
9}
10
11pub struct BrowserService {
12 session: Mutex<Option<BrowserSession>>,
13}
14
15impl Default for BrowserService {
16 fn default() -> Self {
17 Self {
18 session: Mutex::new(None),
19 }
20 }
21}
22
23impl BrowserService {
24 pub fn clear(&self) {
25 self.session.lock().take();
26 }
27
28 pub fn session(&self) -> BrowserSession {
29 self.session
30 .lock()
31 .get_or_insert_with(BrowserSession::new)
32 .clone()
33 }
34}