| 920 | } |
| 921 | |
| 922 | static bool runtime_hello_response_encode(uint8_t out[CBM_DAEMON_RENDEZVOUS_RESPONSE_SIZE], |
| 923 | const cbm_daemon_runtime_connect_result_t *result) { |
| 924 | if (!out || !result) { |
| 925 | return false; |
| 926 | } |
| 927 | memset(out, 0, CBM_DAEMON_RENDEZVOUS_RESPONSE_SIZE); |
| 928 | runtime_put_u32(out + RENDEZVOUS_RESPONSE_CONNECT_STATUS_OFFSET, (uint32_t)result->status); |
| 929 | runtime_put_u32(out + RENDEZVOUS_RESPONSE_HELLO_STATUS_OFFSET, (uint32_t)result->hello_status); |
| 930 | runtime_put_u64(out + RENDEZVOUS_RESPONSE_CLIENT_ID_OFFSET, result->client_id); |
| 931 | runtime_put_u64(out + RENDEZVOUS_RESPONSE_PROCESS_ID_OFFSET, result->authenticated_process_id); |
| 932 | runtime_put_u32(out + RENDEZVOUS_RESPONSE_CONFLICT_STATUS_OFFSET, |
| 933 | (uint32_t)result->conflict.status); |
| 934 | |
| 935 | if (!runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_ACTIVE_VERSION_OFFSET, |
| 936 | CBM_DAEMON_RENDEZVOUS_VERSION_TEXT_CAP, |
| 937 | result->conflict.active_version, true) || |
| 938 | !runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_ACTIVE_BUILD_OFFSET, |
| 939 | CBM_DAEMON_RENDEZVOUS_BUILD_FINGERPRINT_CAP, |
| 940 | result->conflict.active_build_fingerprint, true) || |
| 941 | !runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_REQUESTED_VERSION_OFFSET, |
| 942 | CBM_DAEMON_RENDEZVOUS_VERSION_TEXT_CAP, |
| 943 | result->conflict.requested_version, true) || |
| 944 | !runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_REQUESTED_BUILD_OFFSET, |
| 945 | CBM_DAEMON_RENDEZVOUS_BUILD_FINGERPRINT_CAP, |
| 946 | result->conflict.requested_build_fingerprint, true) || |
| 947 | !runtime_wire_string_encode(out + RENDEZVOUS_RESPONSE_MESSAGE_OFFSET, |
| 948 | CBM_DAEMON_RENDEZVOUS_MESSAGE_CAP, result->message, true)) { |
| 949 | return false; |
| 950 | } |
| 951 | return true; |
| 952 | } |
| 953 | |
| 954 | static bool runtime_hello_response_decode( |
| 955 | const uint8_t payload[CBM_DAEMON_RENDEZVOUS_RESPONSE_SIZE], |
no test coverage detected