mirror of
https://github.com/esphome/esphome.git
synced 2025-10-24 04:33:49 +01:00
tidy up
This commit is contained in:
@@ -109,16 +109,7 @@ template<typename... Ts> class RestartScript : public Script<Ts...> {
|
|||||||
template<typename... Ts> class QueueingScript : public Script<Ts...>, public Component {
|
template<typename... Ts> class QueueingScript : public Script<Ts...>, public Component {
|
||||||
public:
|
public:
|
||||||
void execute(Ts... x) override {
|
void execute(Ts... x) override {
|
||||||
// Lazy init on first use - avoids setup() ordering issues and saves memory
|
this->lazy_init_queue_();
|
||||||
// if script is never executed during this boot cycle
|
|
||||||
if (this->var_queue_.capacity() == 0) {
|
|
||||||
// Allocate max_runs_ slots for queued items (running item is separate)
|
|
||||||
this->var_queue_.init(this->max_runs_);
|
|
||||||
// Initialize all unique_ptr slots to nullptr
|
|
||||||
for (int i = 0; i < this->max_runs_; i++) {
|
|
||||||
this->var_queue_.push_back(nullptr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this->is_action_running() || this->num_queued_ > 0) {
|
if (this->is_action_running() || this->num_queued_ > 0) {
|
||||||
// num_queued_ is the number of *queued* instances (waiting, not including currently running)
|
// num_queued_ is the number of *queued* instances (waiting, not including currently running)
|
||||||
@@ -164,6 +155,19 @@ template<typename... Ts> class QueueingScript : public Script<Ts...>, public Com
|
|||||||
void set_max_runs(int max_runs) { max_runs_ = max_runs; }
|
void set_max_runs(int max_runs) { max_runs_ = max_runs; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
// Lazy init queue on first use - avoids setup() ordering issues and saves memory
|
||||||
|
// if script is never executed during this boot cycle
|
||||||
|
inline void lazy_init_queue_() {
|
||||||
|
if (this->var_queue_.capacity() == 0) {
|
||||||
|
// Allocate max_runs_ slots for queued items (running item is separate)
|
||||||
|
this->var_queue_.init(this->max_runs_);
|
||||||
|
// Initialize all unique_ptr slots to nullptr
|
||||||
|
for (int i = 0; i < this->max_runs_; i++) {
|
||||||
|
this->var_queue_.push_back(nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template<int... S> void trigger_tuple_(const std::tuple<Ts...> &tuple, seq<S...> /*unused*/) {
|
template<int... S> void trigger_tuple_(const std::tuple<Ts...> &tuple, seq<S...> /*unused*/) {
|
||||||
this->trigger(std::get<S>(tuple)...);
|
this->trigger(std::get<S>(tuple)...);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user