34 static constexpr auto NAME =
"simdb-reports";
40 static void defineSchema(simdb::Schema&);
42 void createPipeline(simdb::pipeline::PipelineManager* pipeline_mgr)
override;
44 void setScheduler(
const Scheduler* scheduler);
49 bool must_exist =
true)
const;
52 const report::format::ReportHeader& header);
55 const std::string& key,
56 const std::string& value);
62 void postInit(
int argc,
char** argv)
override;
67 const std::string& annotation);
69 void postTeardown()
override;
75 : descriptor_(descriptor)
87 uint64_t getTick()
const
102 std::vector<double>&& stats)
104 , stats_(std::move(stats))
110 std::vector<char> compress()
const;
113 std::vector<double> stats_;
120 :
ReportAtTick(uncompressed.getDescriptor(), uncompressed.getTick())
121 , bytes_(uncompressed.compress())
127 const std::vector<char>& getBytes()
const
133 std::vector<char> bytes_;
141 std::unordered_set<std::string>& visited_stats,
142 int parent_report_id);
144 using Descriptor = std::tuple<std::string, std::string, std::string, std::string>;
145 std::vector<std::pair<const ReportDescriptor*, Descriptor>> descriptors_;
146 std::unordered_map<const ReportDescriptor*, int> descriptor_ids_;
147 std::unordered_map<const ReportDescriptor*, const report::format::ReportHeader*> descriptor_headers_;
148 std::unordered_map<const ReportDescriptor*, std::vector<int>> descriptor_report_ids_;
149 std::unordered_map<const ReportDescriptor*, std::vector<int>> descriptor_report_style_ids_;
150 std::unordered_map<const ReportDescriptor*, std::vector<int>> descriptor_report_meta_ids_;
151 std::unordered_map<const ReportDescriptor*, std::vector<const StatisticInstance*>> simdb_stats_;
152 std::unordered_map<const ReportDescriptor*, uint64_t> report_start_times_;
153 std::unordered_map<const ReportDescriptor*, uint64_t> report_end_times_;
154 std::unordered_map<const ReportDescriptor*, std::map<std::string, std::string>> report_metadata_;
155 std::unordered_map<const ReportDescriptor*, std::vector<std::pair<uint64_t, std::string>>> report_skip_annotations_;
157 simdb::DatabaseManager* db_mgr_ =
nullptr;
158 simdb::ConcurrentQueue<ReportStatsAtTick>* pipeline_queue_ =
nullptr;