Files
esphome/script
J. Nick Koston a7100beb6f [api] Add single-pass encode_sub_message to eliminate redundant calculate_size() calls
Replace encode_message with encode_sub_message for protobuf submessage encoding.

For repeated submessage fields, encode_sub_message uses a backpatch approach:
writes field tag, reserves 1 byte for length varint, encodes the body, then
backpatches the actual length. For bodies >= 128 bytes, shifts the body forward
to make room for a multi-byte varint. This eliminates 2 of 3 calculate_size()
calls per repeated submessage element.

For singular submessage fields, encode_sub_message uses calculate_size() upfront
to skip empty submessages without writing to the buffer, preserving the debug
size check.

For the BLE advertisement proxy hot path (16 advertisements per batch), this
reduces calculate_size() calls from 48 to 16 per flush.
2026-03-06 14:30:56 -10:00
..
2023-11-25 10:18:36 +11:00