1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #ifndef JTJAI_MEDIA_REPORTER_H
- #define JTJAI_MEDIA_REPORTER_H
- #include "config.h"
- #include "rtsp_client.h"
- #include "scheduler.h"
- #include <vector>
- #include <string>
- #include <boost/json.hpp>
- namespace jtjai_media {
- class ResultReporter {
- public:
- ResultReporter(const ConfigManager& config_mgr);
-
- // 生成完整报告
- bool generate_report(
- const std::vector<RTSPClientStats>& client_stats,
- const StreamScheduler::SchedulerStats& scheduler_stats
- );
-
- // 生成JSON格式报告
- std::string generate_json_report(
- const std::vector<RTSPClientStats>& client_stats,
- const StreamScheduler::SchedulerStats& scheduler_stats
- ) const;
-
- // 生成文本格式报告
- std::string generate_text_report(
- const std::vector<RTSPClientStats>& client_stats,
- const StreamScheduler::SchedulerStats& scheduler_stats
- ) const;
-
- // 生成CSV格式报告
- std::string generate_csv_report(
- const std::vector<RTSPClientStats>& client_stats
- ) const;
-
- // 保存报告到文件
- bool save_to_file(const std::string& content, const std::string& filename) const;
-
- // 打印控制台报告
- void print_console_report(
- const std::vector<RTSPClientStats>& client_stats,
- const StreamScheduler::SchedulerStats& scheduler_stats
- ) const;
- private:
- ConfigManager config_mgr_;
-
- // 辅助方法
- std::string format_duration(const std::chrono::system_clock::time_point& start,
- const std::chrono::system_clock::time_point& end) const;
- std::string format_bytes(int64_t bytes) const;
- std::string format_timestamp(const std::chrono::system_clock::time_point& time) const;
- std::string status_to_string(RTSPClientStatus status) const;
-
- // JSON转换方法
- boost::json::object client_stats_to_json(const RTSPClientStats& stats) const;
- boost::json::object scheduler_stats_to_json(const StreamScheduler::SchedulerStats& stats) const;
- boost::json::object config_to_json() const;
-
- // 统计计算方法
- struct SummaryStats {
- int total_streams;
- int successful_streams;
- int failed_streams;
- int cancelled_streams;
- int64_t total_bytes;
- int64_t total_frames;
- double success_rate;
- double average_duration;
- std::chrono::system_clock::time_point earliest_start;
- std::chrono::system_clock::time_point latest_end;
- };
-
- SummaryStats calculate_summary_stats(const std::vector<RTSPClientStats>& client_stats) const;
- };
- } // namespace jtjai_media
- #endif // JTJAI_MEDIA_REPORTER_H
|