(
code_config: &CodeConfig,
opts: &SessionOptions,
)
| 181 | } |
| 182 | |
| 183 | pub(super) fn resolve_session_store( |
| 184 | code_config: &CodeConfig, |
| 185 | opts: &SessionOptions, |
| 186 | ) -> Option<Arc<dyn crate::store::SessionStore>> { |
| 187 | if opts.session_store.is_some() { |
| 188 | return opts.session_store.clone(); |
| 189 | } |
| 190 | |
| 191 | let dir = code_config.sessions_dir.as_ref()?; |
| 192 | match tokio::runtime::Handle::try_current() { |
| 193 | Ok(handle) => { |
| 194 | let dir = dir.clone(); |
| 195 | match tokio::task::block_in_place(|| { |
| 196 | handle.block_on(crate::store::FileSessionStore::new(dir)) |
| 197 | }) { |
| 198 | Ok(store) => Some(Arc::new(store) as Arc<dyn crate::store::SessionStore>), |
| 199 | Err(e) => { |
| 200 | tracing::warn!("Failed to create session store from sessions_dir: {}", e); |
| 201 | None |
| 202 | } |
| 203 | } |
| 204 | } |
| 205 | Err(_) => { |
| 206 | tracing::warn!("No async runtime for sessions_dir store - persistence disabled"); |
| 207 | None |
| 208 | } |
| 209 | } |
| 210 | } |
no test coverage detected