8#ifdef USE_ESPHOME_TASK_LOG_BUFFER
91 const char *format, va_list args);
95 return read_index_.load(std::memory_order_acquire) != write_index_.load(std::memory_order_acquire);
99 inline size_t size()
const {
return slot_count_; }
104 int acquire_write_slot_();
107 void commit_write_slot_(
int slot_index);
109 std::unique_ptr<LogMessage[]> slots_;
116 std::atomic<size_t> reserve_index_{0};
117 std::atomic<size_t> write_index_{0};
118 std::atomic<size_t> read_index_{0};
void release_message_main_loop()
TaskLogBuffer(size_t slot_count)
Constructor that takes the number of message slots.
static constexpr size_t DEFAULT_SLOT_COUNT
bool borrow_message_main_loop(LogMessage *&message, uint16_t &text_length)
bool send_message_thread_safe(uint8_t level, const char *tag, uint16_t line, const char *thread_name, const char *format, va_list args)
bool HOT has_messages() const
char text[MAX_TEXT_SIZE+1]
static constexpr size_t MAX_TEXT_SIZE
std::atomic< bool > ready
static constexpr size_t MAX_THREAD_NAME_SIZE