1use std::sync::Arc;
4
5#[derive(Clone)]
11pub struct Session {
12 inner: Arc<SessionInner>,
13}
14
15struct SessionInner {
16 log_enabled: bool,
17}
18
19fn log_enabled_via_env_var() -> bool {
20 ::std::env::var_os("RSVG_LOG").is_some()
21}
22
23impl Default for Session {
24 fn default() -> Self {
25 Self {
26 inner: Arc::new(SessionInner {
27 log_enabled: log_enabled_via_env_var(),
28 }),
29 }
30 }
31}
32
33impl Session {
34 #[cfg(test)]
35 pub fn new_for_test_suite() -> Self {
36 Self {
37 inner: Arc::new(SessionInner { log_enabled: false }),
38 }
39 }
40
41 pub fn log_enabled(&self) -> bool {
42 self.inner.log_enabled
43 }
44}