blob: 5ec7d3dffeda1fe8cde8f7df5249ce84e74bf3d0 [file] [log] [blame]
#include "aos/events/aos_logging.h"
namespace aos {
void AosLogToFbs::Initialize(const std::string *name,
Sender<logging::LogMessageFbs> log_sender) {
log_sender_ = std::move(log_sender);
if (log_sender_) {
implementation_ = std::make_shared<logging::CallbackLogImplementation>(
[this](const logging::LogMessage &message_data) {
aos::Sender<logging::LogMessageFbs>::Builder message =
log_sender_.MakeBuilder();
auto message_str = message.fbb()->CreateString(
message_data.message, message_data.message_length);
auto name_str = message.fbb()->CreateString(message_data.name,
message_data.name_length);
::aos::logging::LogMessageFbs::Builder builder =
message.MakeBuilder<::aos::logging::LogMessageFbs>();
builder.add_message(message_str);
builder.add_level(
static_cast<::aos::logging::Level>(message_data.level));
builder.add_source_pid(message_data.source);
builder.add_name(name_str);
if (send_failure_counter_.failures() > 0) {
builder.add_send_failures(send_failure_counter_.failures());
}
send_failure_counter_.Count(message.Send(builder.Finish()));
},
name);
}
}
} // namespace aos