feat(mcp): implement Prompts capability, Resources, and clean up daemon architecture
This commit is contained in:
1 parent
9b9b403ef2
commit
251757f8fc
29 files changed
+1276
-182
No files matched your search
@@ -142,3 +142,41 @@ pub async fn handle_socket(socket: WebSocket, state: Arc<AppState>, _client_type
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use std::sync::atomic::AtomicUsize;
|
||||
use std::sync::RwLock;
|
||||
use crate::router::MemoryHandler;
|
||||
use crate::state::MemoryState;
|
||||
use tempfile::tempdir;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_session_cleanup_drop() {
|
||||
let dir = tempdir().unwrap();
|
||||
let state = Arc::new(MemoryState::new(dir.path().to_str().unwrap()));
|
||||
let app_state = Arc::new(AppState {
|
||||
handler: Arc::new(MemoryHandler::new(state)),
|
||||
clients: RwLock::new(HashMap::new()),
|
||||
next_id: AtomicUsize::new(1),
|
||||
});
|
||||
|
||||
// Insert a dummy client
|
||||
app_state.clients.write().unwrap().insert("test-session".to_string(), tokio::sync::mpsc::channel(1).0);
|
||||
|
||||
let send_task = tokio::spawn(async {});
|
||||
let recv_task = tokio::spawn(async {});
|
||||
|
||||
{
|
||||
let _cleanup = SessionCleanup {
|
||||
session_id: "test-session".to_string(),
|
||||
state: app_state.clone(),
|
||||
send_task,
|
||||
recv_task,
|
||||
};
|
||||
} // Drop happens here
|
||||
|
||||
assert!(app_state.clients.read().unwrap().is_empty());
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user