service: Implement producer and data source unregistration
Bug: 73806120
Change-Id: If3ae078340b4f0d212d6624ca8a20b9665b6de2d
diff --git a/src/tracing/core/service_impl.h b/src/tracing/core/service_impl.h
index cb1ab16..d4b4947 100644
--- a/src/tracing/core/service_impl.h
+++ b/src/tracing/core/service_impl.h
@@ -123,6 +123,7 @@
void RegisterDataSource(ProducerID,
DataSourceID,
const DataSourceDescriptor&);
+ void UnregisterDataSource(ProducerID, DataSourceID);
void CopyProducerPageIntoLogBuffer(ProducerID,
BufferID,
const uint8_t*,
@@ -155,6 +156,12 @@
DataSourceDescriptor descriptor;
};
+ // Represents an active data source for a tracing session.
+ struct DataSourceInstance {
+ DataSourceInstanceID instance_id;
+ DataSourceID data_source_id;
+ };
+
struct TraceBuffer {
TraceBuffer();
~TraceBuffer();
@@ -208,7 +215,7 @@
// List of data source instances that have been enabled on the various
// producers for this tracing session.
- std::multimap<ProducerID, DataSourceInstanceID> data_source_instances;
+ std::multimap<ProducerID, DataSourceInstance> data_source_instances;
// Maps a per-trace-session buffer index into the corresponding global
// BufferID (shared namespace amongst all consumers). This vector has as
@@ -219,10 +226,9 @@
ServiceImpl(const ServiceImpl&) = delete;
ServiceImpl& operator=(const ServiceImpl&) = delete;
- void CreateDataSourceInstanceForProducer(
- const TraceConfig::DataSource& cfg_data_source,
- ProducerEndpointImpl* producer,
- TracingSession* tracing_session);
+ void CreateDataSourceInstance(const TraceConfig::DataSource&,
+ const RegisteredDataSource&,
+ TracingSession*);
// Returns a pointer to the |tracing_sessions_| entry or nullptr if the
// session doesn't exists.