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

Function cbm_daemon_runtime_request_status

src/daemon/runtime.c:2547–2576  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2545}
2546
2547bool cbm_daemon_runtime_request_status(const cbm_daemon_ipc_endpoint_t *endpoint,
2548 const cbm_daemon_build_identity_t *identity,
2549 uint32_t timeout_ms,
2550 cbm_daemon_runtime_status_t *status_out) {
2551 if (!status_out) {
2552 return false;
2553 }
2554 memset(status_out, 0, sizeof(*status_out));
2555 uint8_t *payload = NULL;
2556 if (!runtime_control_request_send(endpoint, identity, CBM_DAEMON_RUNTIME_OP_STATUS, timeout_ms,
2557 CBM_DAEMON_STATUS_RESPONSE_SIZE, &payload)) {
2558 return false;
2559 }
2560 status_out->permanent = (payload[1] & 0x01U) != 0U;
2561 status_out->stopping = (payload[1] & 0x02U) != 0U;
2562 status_out->committed_clients = (uint16_t)(((uint16_t)payload[2] << 8) | payload[3]);
2563 status_out->daemon_pid = runtime_control_read_u32(payload + 4);
2564 status_out->client_count = payload[8] > CBM_DAEMON_CONTROL_CLIENT_CAP
2565 ? (uint8_t)CBM_DAEMON_CONTROL_CLIENT_CAP
2566 : payload[8];
2567 for (size_t index = 0; index < CBM_DAEMON_CONTROL_CLIENT_CAP; index++) {
2568 status_out->client_pids[index] = runtime_control_read_u32(payload + 12U + index * 4U);
2569 }
2570 memcpy(status_out->build_fingerprint, payload + 44U, CBM_DAEMON_BUILD_FINGERPRINT_SIZE);
2571 status_out->build_fingerprint[CBM_DAEMON_BUILD_FINGERPRINT_SIZE - 1U] = '\0';
2572 memcpy(status_out->semantic_version, payload + 109U, sizeof(status_out->semantic_version));
2573 status_out->semantic_version[sizeof(status_out->semantic_version) - 1U] = '\0';
2574 free(payload);
2575 return true;
2576}
2577
2578bool cbm_daemon_runtime_request_stop(const cbm_daemon_ipc_endpoint_t *endpoint,
2579 const cbm_daemon_build_identity_t *identity,

Callers 3

main_run_daemon_ctlFunction · 0.85

Calls 2

runtime_control_read_u32Function · 0.85

Tested by

no test coverage detected