mirror of
https://github.com/esphome/esphome.git
synced 2025-09-04 12:22:20 +01:00
preen
This commit is contained in:
@@ -294,9 +294,7 @@ uint16_t APIConnection::encode_message_to_buffer(ProtoMessage &msg, uint8_t mess
|
|||||||
|
|
||||||
if (is_single || conn->flags_.batch_first_message) {
|
if (is_single || conn->flags_.batch_first_message) {
|
||||||
// Single message or first batch message
|
// Single message or first batch message
|
||||||
shared_buf.clear();
|
conn->prepare_first_message_buffer(shared_buf, header_padding, total_size);
|
||||||
shared_buf.reserve(total_size);
|
|
||||||
shared_buf.resize(header_padding);
|
|
||||||
if (conn->flags_.batch_first_message) {
|
if (conn->flags_.batch_first_message) {
|
||||||
conn->flags_.batch_first_message = false;
|
conn->flags_.batch_first_message = false;
|
||||||
}
|
}
|
||||||
|
@@ -252,17 +252,21 @@ class APIConnection : public APIServerConnection {
|
|||||||
|
|
||||||
// Get header padding size - used for both reserve and insert
|
// Get header padding size - used for both reserve and insert
|
||||||
uint8_t header_padding = this->helper_->frame_header_padding();
|
uint8_t header_padding = this->helper_->frame_header_padding();
|
||||||
|
|
||||||
// Get shared buffer from parent server
|
// Get shared buffer from parent server
|
||||||
std::vector<uint8_t> &shared_buf = this->parent_->get_shared_buffer_ref();
|
std::vector<uint8_t> &shared_buf = this->parent_->get_shared_buffer_ref();
|
||||||
|
this->prepare_first_message_buffer(shared_buf, header_padding,
|
||||||
|
reserve_size + header_padding + this->helper_->frame_footer_size());
|
||||||
|
return {&shared_buf};
|
||||||
|
}
|
||||||
|
|
||||||
|
void prepare_first_message_buffer(std::vector<uint8_t> &shared_buf, size_t header_padding, size_t total_size) {
|
||||||
shared_buf.clear();
|
shared_buf.clear();
|
||||||
// Reserve space for header padding + message + footer
|
// Reserve space for header padding + message + footer
|
||||||
// - Header padding: space for protocol headers (7 bytes for Noise, 6 for Plaintext)
|
// - Header padding: space for protocol headers (7 bytes for Noise, 6 for Plaintext)
|
||||||
// - Footer: space for MAC (16 bytes for Noise, 0 for Plaintext)
|
// - Footer: space for MAC (16 bytes for Noise, 0 for Plaintext)
|
||||||
shared_buf.reserve(reserve_size + header_padding + this->helper_->frame_footer_size());
|
shared_buf.reserve(total_size);
|
||||||
// Resize to add header padding so message encoding starts at the correct position
|
// Resize to add header padding so message encoding starts at the correct position
|
||||||
shared_buf.resize(header_padding);
|
shared_buf.resize(header_padding);
|
||||||
return {&shared_buf};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool try_to_clear_buffer(bool log_out_of_space);
|
bool try_to_clear_buffer(bool log_out_of_space);
|
||||||
|
Reference in New Issue
Block a user