aboutsummaryrefslogtreecommitdiff
path: root/pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h
diff options
context:
space:
mode:
Diffstat (limited to 'pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h')
-rw-r--r--pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h48
1 files changed, 24 insertions, 24 deletions
diff --git a/pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h b/pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h
index 48ac84811..1140f75ad 100644
--- a/pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h
+++ b/pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h
@@ -119,7 +119,9 @@ PW_EXTERN_C_END
namespace pw {
namespace trace {
-class CallbacksImpl {
+// C++ API to the tokenized trace callback system
+// Example: pw::trace::GetTraceCallbacks().UnregisterAllSinks();
+class Callbacks {
public:
enum CallOnEveryEvent {
kCallOnlyWhenEnabled = PW_TRACE_CALL_ONLY_WHEN_ENABLED,
@@ -180,16 +182,8 @@ class CallbacksImpl {
}
};
-// A singleton object of the CallbacksImpl class which can be used to
-// interface with trace using the C++ API.
-// Example: pw::trace::Callbacks::Instance().UnregisterAllSinks();
-class Callbacks {
- public:
- static CallbacksImpl& Instance() { return instance_; }
-
- private:
- static CallbacksImpl instance_;
-};
+// Returns a reference of the tokenized trace callbacks
+Callbacks& GetCallbacks();
// This is a convenience class to register the callback when the object is
// created. For example if the callback should always be registered this can be
@@ -197,22 +191,28 @@ class Callbacks {
class RegisterCallbackWhenCreated {
public:
RegisterCallbackWhenCreated(
- CallbacksImpl::EventCallback event_callback,
- CallbacksImpl::CallOnEveryEvent called_on_every_event =
- CallbacksImpl::kCallOnlyWhenEnabled,
- void* user_data = nullptr) {
- Callbacks::Instance()
+ Callbacks& callbacks,
+ Callbacks::EventCallback event_callback,
+ Callbacks::CallOnEveryEvent called_on_every_event =
+ Callbacks::kCallOnlyWhenEnabled,
+ void* user_data = nullptr)
+ : callbacks_(callbacks) {
+ callbacks_
.RegisterEventCallback(event_callback, called_on_every_event, user_data)
- .IgnoreError(); // TODO(b/242598609): Handle Status properly
+ .IgnoreError(); // TODO: b/242598609 - Handle Status properly
}
- RegisterCallbackWhenCreated(CallbacksImpl::SinkStartBlock sink_start,
- CallbacksImpl::SinkAddBytes sink_add_bytes,
- CallbacksImpl::SinkEndBlock sink_end,
- void* user_data = nullptr) {
- Callbacks::Instance()
- .RegisterSink(sink_start, sink_add_bytes, sink_end, user_data)
- .IgnoreError(); // TODO(b/242598609): Handle Status properly
+ RegisterCallbackWhenCreated(Callbacks& callbacks,
+ Callbacks::SinkStartBlock sink_start,
+ Callbacks::SinkAddBytes sink_add_bytes,
+ Callbacks::SinkEndBlock sink_end,
+ void* user_data = nullptr)
+ : callbacks_(callbacks) {
+ callbacks_.RegisterSink(sink_start, sink_add_bytes, sink_end, user_data)
+ .IgnoreError(); // TODO: b/242598609 - Handle Status properly
}
+
+ private:
+ Callbacks& callbacks_;
};
} // namespace trace