| 264 | } |
| 265 | |
| 266 | async fn load_artifacts(&self, id: &str) -> Result<Option<ArtifactStore>> { |
| 267 | let artifact_dir = self.artifact_dir(id); |
| 268 | if !artifact_dir.exists() { |
| 269 | return Ok(None); |
| 270 | } |
| 271 | |
| 272 | let artifacts = ArtifactStore::load_from_dir(&artifact_dir).with_context(|| { |
| 273 | format!( |
| 274 | "Failed to load artifacts for session {} from {}", |
| 275 | id, |
| 276 | artifact_dir.display() |
| 277 | ) |
| 278 | })?; |
| 279 | Ok(Some(artifacts)) |
| 280 | } |
| 281 | |
| 282 | async fn save_trace_events(&self, id: &str, events: &[TraceEvent]) -> Result<()> { |
| 283 | let path = self.trace_path(id); |