64 const char *format, va_list args) {
67 va_copy(args_copy, args);
68 int ret = vsnprintf(
nullptr, 0, format, args_copy);
76 static constexpr size_t MAX_TEXT_SIZE = 255;
77 size_t text_length = (
static_cast<size_t>(ret) > MAX_TEXT_SIZE) ? MAX_TEXT_SIZE : ret;
80 size_t total_size =
sizeof(
LogMessage) + text_length + 1;
83 void *acquired_memory =
nullptr;
84 BaseType_t result = xRingbufferSendAcquire(ring_buffer_, &acquired_memory, total_size, 0);
86 if (result != pdTRUE || acquired_memory ==
nullptr) {
99 if (thread_name !=
nullptr) {
109 ret = vsnprintf(text_area, text_length + 1, format, args);
113 vRingbufferReturnItem(ring_buffer_, acquired_memory);
118 while (text_length > 0 && text_area[text_length - 1] ==
'\n') {
124 result = xRingbufferSendComplete(ring_buffer_, acquired_memory);
126 if (result != pdTRUE) {
131 message_counter_.fetch_add(1, std::memory_order_relaxed);