42 bp, AdminMessage::log_msg, [](
const uint8_t* data,
size_t size) {
50 msg] = ringbuffer::read_message<AdminMessage::log_msg>(data, size);
53 log_level, tag, file_name.c_str(), line_number, thread_id);
60 std::optional<double> offset_time = std::nullopt;
65 if (log_time_us_count != 0)
69 const double enclave_time_s = log_time_us_count / 1'000'000.0;
72 ::timespec_get(&ts, TIME_UTC);
73 const double host_time_s =
74 ts.tv_sec + (ts.tv_nsec / 1'000'000'000.0);
76 offset_time = enclave_time_s - host_time_s;
80 for (
auto const& logger : loggers)
82 logger->write(ll, offset_time);
88 AdminMessage::fatal_error_msg,
89 [](
const uint8_t* data,
size_t size) {
91 ringbuffer::read_message<AdminMessage::fatal_error_msg>(data, size);
93 std::cerr << msg << std::endl << std::flush;
94 throw std::logic_error(msg);
98 bp, AdminMessage::stopped, [](
const uint8_t*,
size_t) {
99 uv_stop(uv_default_loop());