MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / application_request_cancel

Function application_request_cancel

src/daemon/application.c:2705–2733  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2703}
2704
2705static void application_request_cancel(void *context,
2706 cbm_daemon_runtime_application_session_t *opaque_session,
2707 cbm_daemon_runtime_application_token_t request_token) {
2708 cbm_daemon_application_t *application = context;
2709 cbm_daemon_application_session_t *session = (cbm_daemon_application_session_t *)opaque_session;
2710 if (!application || !session || session->application != application ||
2711 request_token == CBM_DAEMON_RUNTIME_APPLICATION_TOKEN_INVALID) {
2712 return;
2713 }
2714 cbm_mutex_lock(&application->mutex);
2715 if (!session->session_cancelled &&
2716 (!session->request_active || session->active_request_token == request_token)) {
2717 session->request_cancel_token = request_token;
2718 bool active_match = session->request_active;
2719 if (active_match && session->active_job && session->active_job_subscribed) {
2720 cbm_daemon_application_job_t *job = session->active_job;
2721 session->active_job = NULL;
2722 session->active_job_subscribed = false;
2723 application_job_unsubscribe_locked(job);
2724 }
2725 if (active_match) {
2726 /* Keep the MCP atomic cancel inside the same completion mutex.
2727 * Otherwise this callback could pause after unlocking and set the
2728 * flag on a later request that already reused this session. */
2729 (void)cbm_mcp_server_cancel_active(session->mcp);
2730 }
2731 }
2732 cbm_mutex_unlock(&application->mutex);
2733}
2734
2735static void application_session_cancel(void *context,
2736 cbm_daemon_runtime_application_session_t *opaque_session) {

Callers

nothing calls this directly

Calls 4

cbm_mutex_lockFunction · 0.85
cbm_mutex_unlockFunction · 0.85

Tested by

no test coverage detected