| 2754 | } |
| 2755 | |
| 2756 | bool cbm_daemon_runtime_client_heartbeat(cbm_daemon_runtime_client_t *client, uint32_t timeout_ms) { |
| 2757 | if (!client) { |
| 2758 | return false; |
| 2759 | } |
| 2760 | uint8_t *response = NULL; |
| 2761 | if (!runtime_client_exchange(client, CBM_DAEMON_RUNTIME_OP_HEARTBEAT, NULL, 0, timeout_ms, |
| 2762 | &response, STATUS_RESPONSE_SIZE)) { |
| 2763 | return false; |
| 2764 | } |
| 2765 | bool valid = runtime_get_u32(response) == 1; |
| 2766 | free(response); |
| 2767 | return valid; |
| 2768 | } |
| 2769 | |
| 2770 | bool cbm_daemon_runtime_client_application_token_reserve( |
| 2771 | cbm_daemon_runtime_client_t *client, cbm_daemon_runtime_application_token_t *token_out) { |