(agent: &Agent, session_id: &str)
| 85 | } |
| 86 | |
| 87 | pub(super) async fn close_session(agent: &Agent, session_id: &str) -> bool { |
| 88 | let handle: Option<Arc<SessionCloseHandle>> = { |
| 89 | let mut sessions = agent |
| 90 | .sessions |
| 91 | .lock() |
| 92 | .unwrap_or_else(|poison| poison.into_inner()); |
| 93 | sessions.retain(|_, weak| weak.strong_count() > 0); |
| 94 | sessions.get(session_id).and_then(Weak::upgrade) |
| 95 | }; |
| 96 | match handle { |
| 97 | Some(handle) => { |
| 98 | let was_open = !handle.is_closed(); |
| 99 | handle.close().await; |
| 100 | was_open |
| 101 | } |
| 102 | None => false, |
| 103 | } |
| 104 | } |
| 105 | |
| 106 | pub(super) async fn close_agent(agent: &Agent) { |
| 107 | // Mark closed *before* iterating so concurrent `session()` calls fail fast. |
no test coverage detected