blob: 9277b91ed78908afacfb549c423904d4adce8591 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <lib/trace-provider/handler.h>
namespace trace {
const trace_handler_ops_t TraceHandler::kOps = {
.is_category_enabled = &TraceHandler::CallIsCategoryEnabled,
.trace_started = &TraceHandler::CallTraceStarted,
.trace_stopped = &TraceHandler::CallTraceStopped,
.trace_terminated = &TraceHandler::CallTraceTerminated,
.notify_buffer_full = &TraceHandler::CallNotifyBufferFull,
.send_alert = &TraceHandler::CallSendAlert};
TraceHandler::TraceHandler() : trace_handler{.ops = &kOps} {}
TraceHandler::~TraceHandler() = default;
bool TraceHandler::CallIsCategoryEnabled(trace_handler_t* handler, const char* category) {
return static_cast<TraceHandler*>(handler)->IsCategoryEnabled(category);
}
void TraceHandler::CallTraceStarted(trace_handler_t* handler) {
static_cast<TraceHandler*>(handler)->TraceStarted();
}
void TraceHandler::CallTraceStopped(trace_handler_t* handler, zx_status_t disposition) {
static_cast<TraceHandler*>(handler)->TraceStopped(disposition);
}
void TraceHandler::CallTraceTerminated(trace_handler_t* handler) {
static_cast<TraceHandler*>(handler)->TraceTerminated();
}
void TraceHandler::CallNotifyBufferFull(trace_handler_t* handler, uint32_t wrapped_count,
uint64_t durable_data_end) {
static_cast<TraceHandler*>(handler)->NotifyBufferFull(wrapped_count, durable_data_end);
}
void TraceHandler::CallSendAlert(trace_handler_t* handler, const char* alert_name) {
static_cast<TraceHandler*>(handler)->SendAlert(alert_name);
}
} // namespace trace