aboutsummaryrefslogtreecommitdiff
path: root/pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2024-01-17 22:13:58 -0800
committerXin Li <delphij@google.com>2024-01-17 22:13:58 -0800
commit28d03a2a1cabbe01d7bcb6cf5166c10e50d3c2c6 (patch)
treec1643be8ab17fc607cea748a8bb1d621a5964873 /pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h
parentec2628a6ba2d0ecbe3ac10c8c772f6fc6acc345d (diff)
parentf054515492af5132f685cb23fe11891ee77104c9 (diff)
downloadpigweed-28d03a2a1cabbe01d7bcb6cf5166c10e50d3c2c6.tar.gz
Merge Android 24Q1 Release (ab/11220357)temp_319669529
Bug: 319669529 Merged-In: Iba357b308a79d0c8b560acd4f72b5423c9c83294 Change-Id: Icdf552029fb97a34e83c6dd7799433fc473a2506
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