in source/event_stream.c [119:146]
uint32_t aws_event_stream_compute_headers_required_buffer_len(const struct aws_array_list *headers) {
if (!headers || !aws_array_list_length(headers)) {
return 0;
}
size_t headers_count = aws_array_list_length(headers);
size_t headers_len = 0;
for (size_t i = 0; i < headers_count; ++i) {
struct aws_event_stream_header_value_pair *header = NULL;
aws_array_list_get_at_ptr(headers, (void **)&header, i);
headers_len += sizeof(header->header_name_len) + header->header_name_len + 1;
if (header->header_value_type == AWS_EVENT_STREAM_HEADER_STRING ||
header->header_value_type == AWS_EVENT_STREAM_HEADER_BYTE_BUF) {
headers_len += sizeof(header->header_value_len);
}
if (header->header_value_type != AWS_EVENT_STREAM_HEADER_BOOL_FALSE &&
header->header_value_type != AWS_EVENT_STREAM_HEADER_BOOL_TRUE) {
headers_len += header->header_value_len;
}
}
return (uint32_t)headers_len;
}