Merge "probes: Make the type id less error prone"
diff --git a/src/traced/probes/android_log/android_log_data_source.cc b/src/traced/probes/android_log/android_log_data_source.cc
index c49bec6..801658e 100644
--- a/src/traced/probes/android_log/android_log_data_source.cc
+++ b/src/traced/probes/android_log/android_log_data_source.cc
@@ -89,7 +89,7 @@
base::TaskRunner* task_runner,
TracingSessionID session_id,
std::unique_ptr<TraceWriter> writer)
- : ProbesDataSource(session_id, kTypeId),
+ : ProbesDataSource(session_id, Type::kAndroidLog),
task_runner_(task_runner),
writer_(std::move(writer)),
weak_factory_(this) {
diff --git a/src/traced/probes/android_log/android_log_data_source.h b/src/traced/probes/android_log/android_log_data_source.h
index 12f1ae8..7e73cf2 100644
--- a/src/traced/probes/android_log/android_log_data_source.h
+++ b/src/traced/probes/android_log/android_log_data_source.h
@@ -56,7 +56,6 @@
std::string name;
std::vector<std::string> fields;
};
- static constexpr int kTypeId = 6;
AndroidLogDataSource(DataSourceConfig,
base::TaskRunner*,
diff --git a/src/traced/probes/filesystem/inode_file_data_source.cc b/src/traced/probes/filesystem/inode_file_data_source.cc
index 1f0a22f..da7ab15 100644
--- a/src/traced/probes/filesystem/inode_file_data_source.cc
+++ b/src/traced/probes/filesystem/inode_file_data_source.cc
@@ -79,9 +79,6 @@
} // namespace
-// static
-constexpr int InodeFileDataSource::kTypeId;
-
void CreateStaticDeviceToInodeMap(
const std::string& root_directory,
std::map<BlockDeviceID, std::unordered_map<Inode, InodeMapValue>>*
@@ -110,7 +107,7 @@
static_file_map,
LRUInodeCache* cache,
std::unique_ptr<TraceWriter> writer)
- : ProbesDataSource(session_id, kTypeId),
+ : ProbesDataSource(session_id, Type::kInodeFile),
task_runner_(task_runner),
static_file_map_(static_file_map),
cache_(cache),
@@ -297,7 +294,7 @@
bool InodeFileDataSource::OnInodeFound(BlockDeviceID block_device_id,
Inode inode_number,
const std::string& path,
- InodeFileMap_Entry_Type type) {
+ InodeFileMap_Entry_Type inode_type) {
auto it = missing_inodes_.find(block_device_id);
if (it == missing_inodes_.end())
return true;
@@ -318,7 +315,7 @@
FillInodeEntry(AddToCurrentTracePacket(block_device_id), inode_number,
*cur_val);
} else {
- InodeMapValue new_val(InodeMapValue(type, {path}));
+ InodeMapValue new_val(InodeMapValue(inode_type, {path}));
cache_->Insert(key, new_val);
FillInodeEntry(AddToCurrentTracePacket(block_device_id), inode_number,
new_val);
diff --git a/src/traced/probes/filesystem/inode_file_data_source.h b/src/traced/probes/filesystem/inode_file_data_source.h
index 8ccab1a..2d18fb8 100644
--- a/src/traced/probes/filesystem/inode_file_data_source.h
+++ b/src/traced/probes/filesystem/inode_file_data_source.h
@@ -53,8 +53,6 @@
class InodeFileDataSource : public ProbesDataSource,
public FileScanner::Delegate {
public:
- static constexpr int kTypeId = 2;
-
InodeFileDataSource(
DataSourceConfig,
base::TaskRunner*,
diff --git a/src/traced/probes/ftrace/ftrace_data_source.cc b/src/traced/probes/ftrace/ftrace_data_source.cc
index f28a491..e4890dc 100644
--- a/src/traced/probes/ftrace/ftrace_data_source.cc
+++ b/src/traced/probes/ftrace/ftrace_data_source.cc
@@ -25,15 +25,12 @@
namespace perfetto {
-// static
-constexpr int FtraceDataSource::kTypeId;
-
FtraceDataSource::FtraceDataSource(
base::WeakPtr<FtraceController> controller_weak,
TracingSessionID session_id,
const FtraceConfig& config,
std::unique_ptr<TraceWriter> writer)
- : ProbesDataSource(session_id, kTypeId),
+ : ProbesDataSource(session_id, Type::kFtrace),
config_(config),
writer_(std::move(writer)),
controller_weak_(std::move(controller_weak)) {}
diff --git a/src/traced/probes/ftrace/ftrace_data_source.h b/src/traced/probes/ftrace/ftrace_data_source.h
index 1730616..3c19be3 100644
--- a/src/traced/probes/ftrace/ftrace_data_source.h
+++ b/src/traced/probes/ftrace/ftrace_data_source.h
@@ -54,7 +54,6 @@
// FtraceController.
class FtraceDataSource : public ProbesDataSource {
public:
- static constexpr int kTypeId = 1;
FtraceDataSource(base::WeakPtr<FtraceController>,
TracingSessionID,
const FtraceConfig&,
diff --git a/src/traced/probes/metatrace/metatrace_data_source.cc b/src/traced/probes/metatrace/metatrace_data_source.cc
index f87117e..f59b537 100644
--- a/src/traced/probes/metatrace/metatrace_data_source.cc
+++ b/src/traced/probes/metatrace/metatrace_data_source.cc
@@ -35,7 +35,7 @@
MetatraceDataSource::MetatraceDataSource(base::TaskRunner* task_runner,
TracingSessionID session_id,
std::unique_ptr<TraceWriter> writer)
- : ProbesDataSource(session_id, kTypeId),
+ : ProbesDataSource(session_id, Type::kMetaTrace),
task_runner_(task_runner),
trace_writer_(std::move(writer)) {}
diff --git a/src/traced/probes/metatrace/metatrace_data_source.h b/src/traced/probes/metatrace/metatrace_data_source.h
index 3bd0d04..54d110d 100644
--- a/src/traced/probes/metatrace/metatrace_data_source.h
+++ b/src/traced/probes/metatrace/metatrace_data_source.h
@@ -32,7 +32,6 @@
class MetatraceDataSource : public ProbesDataSource {
public:
- static constexpr int kTypeId = 8;
static const char* kDataSourceName;
MetatraceDataSource(base::TaskRunner*,
diff --git a/src/traced/probes/packages_list/packages_list_data_source.cc b/src/traced/probes/packages_list/packages_list_data_source.cc
index 730d0f6..3ae20d7 100644
--- a/src/traced/probes/packages_list/packages_list_data_source.cc
+++ b/src/traced/probes/packages_list/packages_list_data_source.cc
@@ -109,7 +109,8 @@
const DataSourceConfig& ds_config,
TracingSessionID session_id,
std::unique_ptr<TraceWriter> writer)
- : ProbesDataSource(session_id, kTypeId), writer_(std::move(writer)) {
+ : ProbesDataSource(session_id, Type::kPackagesList),
+ writer_(std::move(writer)) {
PackagesListConfig::Decoder cfg(ds_config.packages_list_config_raw());
for (auto name = cfg.package_name_filter(); name; ++name) {
package_name_filter_.emplace((*name).ToStdString());
diff --git a/src/traced/probes/packages_list/packages_list_data_source.h b/src/traced/probes/packages_list/packages_list_data_source.h
index 6f0ee9a..d99674c 100644
--- a/src/traced/probes/packages_list/packages_list_data_source.h
+++ b/src/traced/probes/packages_list/packages_list_data_source.h
@@ -50,7 +50,6 @@
class PackagesListDataSource : public ProbesDataSource {
public:
- static constexpr int kTypeId = 7;
PackagesListDataSource(const DataSourceConfig& ds_config,
TracingSessionID session_id,
std::unique_ptr<TraceWriter> writer);
diff --git a/src/traced/probes/power/android_power_data_source.cc b/src/traced/probes/power/android_power_data_source.cc
index fc8c079..d44e20b 100644
--- a/src/traced/probes/power/android_power_data_source.cc
+++ b/src/traced/probes/power/android_power_data_source.cc
@@ -88,7 +88,7 @@
base::TaskRunner* task_runner,
TracingSessionID session_id,
std::unique_ptr<TraceWriter> writer)
- : ProbesDataSource(session_id, kTypeId),
+ : ProbesDataSource(session_id, Type::kAndroidPower),
task_runner_(task_runner),
rail_descriptors_logged_(false),
writer_(std::move(writer)),
diff --git a/src/traced/probes/power/android_power_data_source.h b/src/traced/probes/power/android_power_data_source.h
index 8b627b0..70be823 100644
--- a/src/traced/probes/power/android_power_data_source.h
+++ b/src/traced/probes/power/android_power_data_source.h
@@ -34,8 +34,6 @@
class AndroidPowerDataSource : public ProbesDataSource {
public:
- static constexpr int kTypeId = 5;
-
AndroidPowerDataSource(DataSourceConfig,
base::TaskRunner*,
TracingSessionID,
diff --git a/src/traced/probes/probes_data_source.cc b/src/traced/probes/probes_data_source.cc
index f051f8d..fbbfbab 100644
--- a/src/traced/probes/probes_data_source.cc
+++ b/src/traced/probes/probes_data_source.cc
@@ -18,8 +18,8 @@
namespace perfetto {
-ProbesDataSource::ProbesDataSource(TracingSessionID session_id, int id)
- : tracing_session_id(session_id), type_id(id) {}
+ProbesDataSource::ProbesDataSource(TracingSessionID session_id, Type t)
+ : tracing_session_id(session_id), type(t) {}
ProbesDataSource::~ProbesDataSource() = default;
} // namespace perfetto
diff --git a/src/traced/probes/probes_data_source.h b/src/traced/probes/probes_data_source.h
index ef410c7..d8cb3f1 100644
--- a/src/traced/probes/probes_data_source.h
+++ b/src/traced/probes/probes_data_source.h
@@ -27,8 +27,19 @@
// Base class for all data sources in traced_probes.
class ProbesDataSource {
public:
- // |type_id| is a home-brewed RTTI, e.g. InodeFileDataSource::kTypeId.
- ProbesDataSource(TracingSessionID, int type_id);
+ enum class Type {
+ kInvalid = 0,
+ kFtrace,
+ kInodeFile,
+ kProcessStats,
+ kSysStats,
+ kAndroidPower,
+ kAndroidLog,
+ kPackagesList,
+ kMetaTrace
+ };
+
+ ProbesDataSource(TracingSessionID, Type);
virtual ~ProbesDataSource();
virtual void Start() = 0;
@@ -43,7 +54,7 @@
}
const TracingSessionID tracing_session_id;
- const int type_id;
+ const Type type;
bool started = false; // Set by probes_producer.cc.
private:
diff --git a/src/traced/probes/probes_producer.cc b/src/traced/probes/probes_producer.cc
index 1d79eae..a811a09 100644
--- a/src/traced/probes/probes_producer.cc
+++ b/src/traced/probes/probes_producer.cc
@@ -344,7 +344,7 @@
// MetatraceDataSource special case: re-flush and ack the stop (to record the
// flushes of other data sources).
- if (data_source->type_id == MetatraceDataSource::kTypeId) {
+ if (data_source->type == ProbesDataSource::Type::kMetaTrace) {
data_source->Flush(FlushRequestID{0}, [] {});
endpoint_->NotifyDataSourceStopped(id);
}
@@ -486,14 +486,14 @@
ProbesDataSource* ds = it->second;
if (!ds->started)
continue;
- switch (ds->type_id) {
- case FtraceDataSource::kTypeId:
+ switch (ds->type) {
+ case ProbesDataSource::Type::kFtrace:
metadata = static_cast<FtraceDataSource*>(ds)->mutable_metadata();
break;
- case InodeFileDataSource::kTypeId:
+ case ProbesDataSource::Type::kInodeFile:
inode_data_source = static_cast<InodeFileDataSource*>(ds);
break;
- case ProcessStatsDataSource::kTypeId: {
+ case ProbesDataSource::Type::kProcessStats: {
// A trace session might have declared more than one ps data source.
// In those cases we often use one for a full dump on startup (
// targeting a dedicated buffer) and another one for on-demand dumps
@@ -504,12 +504,13 @@
ps_data_source = ps;
break;
}
- case SysStatsDataSource::kTypeId:
- case AndroidLogDataSource::kTypeId:
- case PackagesListDataSource::kTypeId:
- case MetatraceDataSource::kTypeId:
+ case ProbesDataSource::Type::kSysStats:
+ case ProbesDataSource::Type::kAndroidPower:
+ case ProbesDataSource::Type::kAndroidLog:
+ case ProbesDataSource::Type::kPackagesList:
+ case ProbesDataSource::Type::kMetaTrace:
break;
- default:
+ case ProbesDataSource::Type::kInvalid:
PERFETTO_DFATAL("Invalid data source.");
} // switch (type_id)
} // for (session_data_sources_)
diff --git a/src/traced/probes/ps/process_stats_data_source.cc b/src/traced/probes/ps/process_stats_data_source.cc
index 511aa23..e432bba 100644
--- a/src/traced/probes/ps/process_stats_data_source.cc
+++ b/src/traced/probes/ps/process_stats_data_source.cc
@@ -83,15 +83,12 @@
} // namespace
-// static
-constexpr int ProcessStatsDataSource::kTypeId;
-
ProcessStatsDataSource::ProcessStatsDataSource(
base::TaskRunner* task_runner,
TracingSessionID session_id,
std::unique_ptr<TraceWriter> writer,
const DataSourceConfig& ds_config)
- : ProbesDataSource(session_id, kTypeId),
+ : ProbesDataSource(session_id, Type::kProcessStats),
task_runner_(task_runner),
writer_(std::move(writer)),
weak_factory_(this) {
diff --git a/src/traced/probes/ps/process_stats_data_source.h b/src/traced/probes/ps/process_stats_data_source.h
index 100ef62..5105dee 100644
--- a/src/traced/probes/ps/process_stats_data_source.h
+++ b/src/traced/probes/ps/process_stats_data_source.h
@@ -48,8 +48,6 @@
class ProcessStatsDataSource : public ProbesDataSource {
public:
- static constexpr int kTypeId = 3;
-
ProcessStatsDataSource(base::TaskRunner*,
TracingSessionID,
std::unique_ptr<TraceWriter> writer,
diff --git a/src/traced/probes/sys_stats/sys_stats_data_source.cc b/src/traced/probes/sys_stats/sys_stats_data_source.cc
index 132e279..65cb22d 100644
--- a/src/traced/probes/sys_stats/sys_stats_data_source.cc
+++ b/src/traced/probes/sys_stats/sys_stats_data_source.cc
@@ -65,15 +65,12 @@
} // namespace
-// static
-constexpr int SysStatsDataSource::kTypeId;
-
SysStatsDataSource::SysStatsDataSource(base::TaskRunner* task_runner,
TracingSessionID session_id,
std::unique_ptr<TraceWriter> writer,
const DataSourceConfig& ds_config,
OpenFunction open_fn)
- : ProbesDataSource(session_id, kTypeId),
+ : ProbesDataSource(session_id, Type::kSysStats),
task_runner_(task_runner),
writer_(std::move(writer)),
weak_factory_(this) {
diff --git a/src/traced/probes/sys_stats/sys_stats_data_source.h b/src/traced/probes/sys_stats/sys_stats_data_source.h
index ad33071..7152276 100644
--- a/src/traced/probes/sys_stats/sys_stats_data_source.h
+++ b/src/traced/probes/sys_stats/sys_stats_data_source.h
@@ -45,7 +45,6 @@
class SysStatsDataSource : public ProbesDataSource {
public:
- static constexpr int kTypeId = 4;
using OpenFunction = base::ScopedFile (*)(const char*);
SysStatsDataSource(base::TaskRunner*,
TracingSessionID,