mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-29 22:24:26 +00:00 
			
		
		
		
	Merge branch 'batch_eliminate_heap' into integration
This commit is contained in:
		| @@ -1632,6 +1632,10 @@ ProtoWriteBuffer APIConnection::allocate_batch_message_buffer(uint16_t size) { | ||||
| } | ||||
|  | ||||
| void APIConnection::process_batch_() { | ||||
|   // Ensure PacketInfo remains trivially destructible for our placement new approach | ||||
|   static_assert(std::is_trivially_destructible<PacketInfo>::value, | ||||
|                 "PacketInfo must remain trivially destructible with this placement-new approach"); | ||||
|  | ||||
|   if (this->deferred_batch_.empty()) { | ||||
|     this->flags_.batch_scheduled = false; | ||||
|     return; | ||||
|   | ||||
| @@ -19,6 +19,8 @@ namespace api { | ||||
| // Keepalive timeout in milliseconds | ||||
| static constexpr uint32_t KEEPALIVE_TIMEOUT_MS = 60000; | ||||
| // Maximum number of entities to process in a single batch during initial state/info sending | ||||
| // This was increased from 20 to 24 after removing the unique_id field from entity info messages, | ||||
| // which reduced message sizes allowing more entities per batch without exceeding packet limits | ||||
| static constexpr size_t MAX_INITIAL_PER_BATCH = 24; | ||||
| // Maximum number of packets to process in a single batch (platform-dependent) | ||||
| // This limit exists to prevent stack overflow from the PacketInfo array in process_batch_ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user