diff options
author | Xin Li <delphij@google.com> | 2024-01-17 22:13:58 -0800 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2024-01-17 22:13:58 -0800 |
commit | 28d03a2a1cabbe01d7bcb6cf5166c10e50d3c2c6 (patch) | |
tree | c1643be8ab17fc607cea748a8bb1d621a5964873 /pw_trace_tokenized/public/pw_trace_tokenized/trace_callback.h | |
parent | ec2628a6ba2d0ecbe3ac10c8c772f6fc6acc345d (diff) | |
parent | f054515492af5132f685cb23fe11891ee77104c9 (diff) | |
download | pigweed-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.h | 48 |
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 |