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

Function runtime_application_request

tests/test_daemon_runtime.c:862–900  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

860}
861
862static cbm_daemon_runtime_application_status_t runtime_application_request(
863 void *opaque, cbm_daemon_runtime_application_session_t *opaque_session,
864 cbm_daemon_runtime_application_token_t request_token, const uint8_t *request,
865 uint32_t request_length, uint8_t **response_out, uint32_t *response_length_out) {
866 (void)request_token;
867 runtime_application_context_t *context = opaque;
868 runtime_application_session_t *session = (runtime_application_session_t *)opaque_session;
869 if (!context || !session || session->context != context || !response_out ||
870 !response_length_out || (request_length > 0 && !request)) {
871 return CBM_DAEMON_RUNTIME_APPLICATION_HANDLER_ERROR;
872 }
873 *response_out = NULL;
874 *response_length_out = 0;
875 int request_index = atomic_fetch_add_explicit(&context->requests, 1, memory_order_relaxed);
876 if (request_index == 0 &&
877 atomic_load_explicit(&context->block_first_request, memory_order_acquire)) {
878 atomic_store_explicit(&context->first_request_started, true, memory_order_release);
879 bool ignore_cancel =
880 atomic_load_explicit(&context->ignore_first_request_cancel, memory_order_acquire);
881 while (!(ignore_cancel
882 ? atomic_load_explicit(&context->release_first_request, memory_order_acquire)
883 : atomic_load_explicit(&session->cancel_requested, memory_order_acquire))) {
884 struct timespec pause = {.tv_sec = 0, .tv_nsec = 1000000};
885 (void)cbm_nanosleep(&pause, NULL);
886 }
887 return CBM_DAEMON_RUNTIME_APPLICATION_CANCELLED;
888 }
889 if (request_length == 0) {
890 return CBM_DAEMON_RUNTIME_APPLICATION_OK;
891 }
892 uint8_t *response = malloc(request_length);
893 if (!response) {
894 return CBM_DAEMON_RUNTIME_APPLICATION_HANDLER_ERROR;
895 }
896 memcpy(response, request, request_length);
897 *response_out = response;
898 *response_length_out = request_length;
899 return CBM_DAEMON_RUNTIME_APPLICATION_OK;
900}
901
902static void *runtime_application_client_request_thread(void *opaque) {
903 runtime_application_client_call_t *call = opaque;

Callers

nothing calls this directly

Calls 1

cbm_nanosleepFunction · 0.85

Tested by

no test coverage detected