diff options
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 |