mirror of
https://github.com/esphome/esphome.git
synced 2025-01-09 14:21:46 +01:00
refine comments
This commit is contained in:
parent
7b1bba307a
commit
a30d459d2b
1 changed files with 8 additions and 12 deletions
|
@ -13,18 +13,16 @@
|
||||||
namespace esphome {
|
namespace esphome {
|
||||||
namespace api {
|
namespace api {
|
||||||
|
|
||||||
/*
|
|
||||||
This class holds a pointer to the event source, the event type, and a pointer to a lambda that will lazily
|
|
||||||
generate the event body. The source and type allow dedup in the deferred queue and the lambda saves on
|
|
||||||
having to store the message body upfront. The lambda should not need any closures due to the parameters
|
|
||||||
so it's only overhead is the pointer to the lambda itself.
|
|
||||||
That's three pointers, so 12 bytes. The entry in the deferred event queue (a std::vector with no overhead)
|
|
||||||
is the DeferredEvent instance itself (not a pointer to one elsewhere in heap) so still 12 bytes total per
|
|
||||||
entry.
|
|
||||||
*/
|
|
||||||
using send_message_t = bool(APIConnection *, void *);
|
using send_message_t = bool(APIConnection *, void *);
|
||||||
|
|
||||||
class DeferredUpdateEventSourceList;
|
/*
|
||||||
|
This class holds a pointer to the source component that wants to publish a message, and a pointer to a function that
|
||||||
|
will lazily publish that message. The two pointers allow dedup in the deferred queue if multiple publishes for the
|
||||||
|
same component are backed up, and take up only 8 bytes of memory. The entry in the deferred queue (a std::vector) is
|
||||||
|
the DeferredMessage instance itself (not a pointer to one elsewhere in heap) so still only 8 bytes per entry. Even
|
||||||
|
100 backed up messages (you'd have to have at least 100 sensors publishing because of dedup) would take up only 0.8
|
||||||
|
kB.
|
||||||
|
*/
|
||||||
class DeferredMessageQueue {
|
class DeferredMessageQueue {
|
||||||
struct DeferredMessage {
|
struct DeferredMessage {
|
||||||
friend class DeferredMessageQueue;
|
friend class DeferredMessageQueue;
|
||||||
|
@ -51,9 +49,7 @@ class DeferredMessageQueue {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DeferredMessageQueue(APIConnection *api_connection) : api_connection_(api_connection) {}
|
DeferredMessageQueue(APIConnection *api_connection) : api_connection_(api_connection) {}
|
||||||
|
|
||||||
void process_queue();
|
void process_queue();
|
||||||
|
|
||||||
void defer(void *source, send_message_t *send_message);
|
void defer(void *source, send_message_t *send_message);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue