Files
ECAP_Server/module/Local_Server/Data_Source/Data_Source_Handler.h
T
2026-08-28 11:49:06 +08:00

42 lines
1.7 KiB
C++

#pragma once
#include <string_view>
#include <utility>
#include "Database.h"
#include "Local_Server/global_include.h"
#include "PlayBack.h"
#include "Psc_Cpp_Core/Base/SM_RingBuffer.h"
#include "Psc_Cpp_Core/Serial/Serial_Coro.h"
#include "Psc_Cpp_Core/Statistics/Frequency_Limit.h"
#include "Psc_Cpp_Core/Statistics/Statistics.h"
#include "Psc_Cpp_Core/transmit_protocol/core/statistics.h"
#include "global.h"
class Data_Feed;
// 这个函数专门装cpu密集函数 放到线程池去处理
class Data_Source_Handler : public DataBase {
public:
std::shared_ptr<SSR::Msg> create_msg(std::string_view packet);
virtual void origin_data_transform_mode_data(std::string& origin_data) {};
virtual void before_handle_msg(std::shared_ptr<SSR::Mode_Msg>& msg) {};
virtual void handle_mode_s(std::shared_ptr<SSR::Mode_S_Msg>& msg);
void handle_HULC(std::string_view packet);
size_t process_mode_acs_data(std::string_view mode_data);
Mode_AC_Statistic_Data mode_ac_statistic;
Mode_S_Statistic_Data mode_s_statistic;
Psc::Throughput_Statistics input_statistics;
~Data_Source_Handler() override = default;
// 推送到 data_feed 相关代码
void push_to_feed(const std::shared_ptr<SSR::Msg>& msg);
void refresh_data_feed_key_list();
struct Cached_Source_Info {
std::string key;
std::shared_ptr<Data_Feed> feed;
Psc::Value_Statistics mode_s_cache_num;
Psc::Value_Statistics mode_other_cache_num;
};
std::atomic<bool> need_refresh_data_feed_key_list = true;
std::vector<Cached_Source_Info> cached_data_feed_key_list{};
Psc::JSON get_all_connect_feed_status();
Psc::JSON get_all_connect_feed();
std::mutex cdf_mtx;
};