| 2236 | } |
| 2237 | |
| 2238 | static cbm_daemon_runtime_application_session_t *application_session_open( |
| 2239 | void *context, cbm_daemon_client_id_t client_id, uint64_t authenticated_process_id) { |
| 2240 | cbm_daemon_application_t *application = context; |
| 2241 | if (!application || client_id == CBM_DAEMON_CLIENT_ID_INVALID || |
| 2242 | authenticated_process_id == 0) { |
| 2243 | return NULL; |
| 2244 | } |
| 2245 | cbm_daemon_application_session_t *session = calloc(1, sizeof(*session)); |
| 2246 | if (!session) { |
| 2247 | return NULL; |
| 2248 | } |
| 2249 | session->mcp = cbm_mcp_server_new(NULL); |
| 2250 | if (!session->mcp || !cbm_mcp_server_release_pristine_memory_store(session->mcp)) { |
| 2251 | cbm_mcp_server_free(session->mcp); |
| 2252 | free(session); |
| 2253 | return NULL; |
| 2254 | } |
| 2255 | cbm_mcp_server_set_background_tasks(session->mcp, false); |
| 2256 | cbm_mcp_server_set_config(session->mcp, application->config); |
| 2257 | cbm_mcp_server_set_index_executor(session->mcp, application_index_execute, session); |
| 2258 | cbm_mcp_server_set_project_mutation_guard(session->mcp, application_session_mutation_begin, |
| 2259 | application_session_mutation_end, session); |
| 2260 | cbm_mcp_server_set_project_mutation_try_guard(session->mcp, |
| 2261 | application_session_mutation_try_begin); |
| 2262 | session->tool_profile = CBM_MCP_TOOL_PROFILE_ALL; |
| 2263 | session->application = application; |
| 2264 | session->client_id = client_id; |
| 2265 | session->authenticated_process_id = authenticated_process_id; |
| 2266 | |
| 2267 | cbm_mutex_lock(&application->mutex); |
| 2268 | if (application->stopping) { |
| 2269 | cbm_mutex_unlock(&application->mutex); |
| 2270 | cbm_mcp_server_free(session->mcp); |
| 2271 | free(session); |
| 2272 | return NULL; |
| 2273 | } |
| 2274 | session->next = application->sessions; |
| 2275 | application->sessions = session; |
| 2276 | cbm_mutex_unlock(&application->mutex); |
| 2277 | return (cbm_daemon_runtime_application_session_t *)session; |
| 2278 | } |
| 2279 | |
| 2280 | static cbm_daemon_runtime_application_status_t application_set_context( |
| 2281 | cbm_daemon_application_session_t *session, const uint8_t *request, uint32_t request_length) { |
nothing calls this directly
no test coverage detected