diff options
Diffstat (limited to 'src/trace_processor/trace_processor_impl.h')
-rw-r--r-- | src/trace_processor/trace_processor_impl.h | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/src/trace_processor/trace_processor_impl.h b/src/trace_processor/trace_processor_impl.h index cb9ef9f67..4711a0713 100644 --- a/src/trace_processor/trace_processor_impl.h +++ b/src/trace_processor/trace_processor_impl.h @@ -21,6 +21,7 @@ #include <atomic> #include <functional> +#include <map> #include <string> #include <vector> @@ -28,6 +29,8 @@ #include "perfetto/trace_processor/basic_types.h" #include "perfetto/trace_processor/status.h" #include "perfetto/trace_processor/trace_processor.h" +#include "src/trace_processor/sqlite/create_function.h" +#include "src/trace_processor/sqlite/create_view_function.h" #include "src/trace_processor/sqlite/db_sqlite_table.h" #include "src/trace_processor/sqlite/query_cache.h" #include "src/trace_processor/sqlite/scoped_db.h" @@ -46,25 +49,35 @@ class TraceProcessorImpl : public TraceProcessor, public: explicit TraceProcessorImpl(const Config&); + TraceProcessorImpl(const TraceProcessorImpl&) = delete; + TraceProcessorImpl& operator=(const TraceProcessorImpl&) = delete; + + TraceProcessorImpl(TraceProcessorImpl&&) = delete; + TraceProcessorImpl& operator=(TraceProcessorImpl&&) = delete; + ~TraceProcessorImpl() override; // TraceProcessorStorage implementation: - util::Status Parse(std::unique_ptr<uint8_t[]>, size_t) override; + base::Status Parse(TraceBlobView) override; void NotifyEndOfFile() override; // TraceProcessor implementation: - Iterator ExecuteQuery(const std::string& sql, - int64_t time_queued = 0) override; + Iterator ExecuteQuery(const std::string& sql) override; - util::Status RegisterMetric(const std::string& path, + base::Status RegisterMetric(const std::string& path, const std::string& sql) override; - util::Status ExtendMetricsProto(const uint8_t* data, size_t size) override; + base::Status ExtendMetricsProto(const uint8_t* data, size_t size) override; - util::Status ComputeMetric(const std::vector<std::string>& metric_names, + base::Status ExtendMetricsProto( + const uint8_t* data, + size_t size, + const std::vector<std::string>& skip_prefixes) override; + + base::Status ComputeMetric(const std::vector<std::string>& metric_names, std::vector<uint8_t>* metrics) override; - util::Status ComputeMetricText(const std::vector<std::string>& metric_names, + base::Status ComputeMetricText(const std::vector<std::string>& metric_names, TraceProcessor::MetricResultFormat format, std::string* metrics_string) override; @@ -79,7 +92,7 @@ class TraceProcessorImpl : public TraceProcessor, void EnableMetatrace() override; - util::Status DisableAndReadMetatrace( + base::Status DisableAndReadMetatrace( std::vector<uint8_t>* trace_proto) override; private: @@ -99,11 +112,25 @@ class TraceProcessorImpl : public TraceProcessor, } bool IsRootMetricField(const std::string& metric_name); + + // Keep this first: we need this to be destroyed after we clean up + // everything else. ScopedDb db_; + + // State necessary for CREATE_FUNCTION invocations. We store this here as we + // need to finalize any prepared statements *before* we destroy the database. + CreateFunction::State create_function_state_; + + // State necessary for CREATE_VIEW_FUNCTION invocations. We store this here as + // we need to finalize any prepared statements *before* we destroy the + // database. + CreateViewFunction::State create_view_function_state_; + std::unique_ptr<QueryCache> query_cache_; DescriptorPool pool_; std::vector<metrics::SqlMetricFile> sql_metrics_; + std::unordered_map<std::string, std::string> proto_field_to_sql_metric_path_; // This is atomic because it is set by the CTRL-C signal handler and we need // to prevent single-flow compiler optimizations in ExecuteQuery(). @@ -118,7 +145,6 @@ class TraceProcessorImpl : public TraceProcessor, uint64_t bytes_parsed_ = 0; }; - } // namespace trace_processor } // namespace perfetto |