| 881 | } |
| 882 | |
| 883 | static bool runtime_hello_response_encode(uint8_t out[CBM_DAEMON_RENDEZVOUS_RESPONSE_SIZE], |
| 884 | const cbm_daemon_runtime_connect_result_t *result) { |
| 885 | if (!out || !result) { |
| 886 | return false; |
| 887 | } |
| 888 | memset(out, 0, CBM_DAEMON_RENDEZVOUS_RESPONSE_SIZE); |
| 889 | runtime_put_u32(out + RENDEZVOUS_RESPONSE_CONNECT_STATUS_OFFSET, (uint32_t)result->status); |
| 890 | runtime_put_u32(out + RENDEZVOUS_RESPONSE_HELLO_STATUS_OFFSET, (uint32_t)result->hello_status); |
| 891 | runtime_put_u64(out + RENDEZVOUS_RESPONSE_CLIENT_ID_OFFSET, result->client_id); |
| 892 | runtime_put_u64(out + RENDEZVOUS_RESPONSE_PROCESS_ID_OFFSET, result->authenticated_process_id); |
| 893 | runtime_put_u32(out + RENDEZVOUS_RESPONSE_CONFLICT_STATUS_OFFSET, |
| 894 | (uint32_t)result->conflict.status); |
| 895 | |
| 896 | if (!runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_ACTIVE_VERSION_OFFSET, |
| 897 | CBM_DAEMON_RENDEZVOUS_VERSION_TEXT_CAP, |
| 898 | result->conflict.active_version, true) || |
| 899 | !runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_ACTIVE_BUILD_OFFSET, |
| 900 | CBM_DAEMON_RENDEZVOUS_BUILD_FINGERPRINT_CAP, |
| 901 | result->conflict.active_build_fingerprint, true) || |
| 902 | !runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_REQUESTED_VERSION_OFFSET, |
| 903 | CBM_DAEMON_RENDEZVOUS_VERSION_TEXT_CAP, |
| 904 | result->conflict.requested_version, true) || |
| 905 | !runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_REQUESTED_BUILD_OFFSET, |
| 906 | CBM_DAEMON_RENDEZVOUS_BUILD_FINGERPRINT_CAP, |
| 907 | result->conflict.requested_build_fingerprint, true) || |
| 908 | !runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_MESSAGE_OFFSET, |
| 909 | CBM_DAEMON_RENDEZVOUS_MESSAGE_CAP, result->message, true)) { |
| 910 | return false; |
| 911 | } |
| 912 | return true; |
| 913 | } |
| 914 | |
| 915 | static bool runtime_hello_response_decode( |
| 916 | const uint8_t payload[CBM_DAEMON_RENDEZVOUS_RESPONSE_SIZE], |
no test coverage detected