autoscan
This commit is contained in:
parent
b0e66efe82
commit
3f278a9fc0
@ -58,4 +58,12 @@ class RecordManager
|
|||||||
|
|
||||||
// 给一个 stream 的文件列表排序
|
// 给一个 stream 的文件列表排序
|
||||||
void sortStream(const std::string& stream);
|
void sortStream(const std::string& stream);
|
||||||
|
|
||||||
|
// === 自动扫描线程 ===
|
||||||
|
void startAutoScan(int interval_sec);
|
||||||
|
void stopAutoScan();
|
||||||
|
|
||||||
|
std::thread scan_thread_;
|
||||||
|
bool running_ = false;
|
||||||
|
int scan_interval_sec_ = 60;
|
||||||
};
|
};
|
||||||
@ -20,12 +20,15 @@ RecordManager::RecordManager(const std::string& srs_record_cfg_path) : srs_recor
|
|||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
LOG_ERROR("[RecordManager] Failed to load SRS config.");
|
LOG_ERROR("[RecordManager] Failed to load SRS config.");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
LOG_INFO("[RecordManager] SRS config loaded successfully.");
|
||||||
LOG_INFO("[RecordManager] SRS config loaded. record_dir=" + record_dir_ +
|
LOG_INFO("record_dir = " + record_dir_);
|
||||||
", dvr_duration=" + std::to_string(dvr_duration_sec_) + "s");
|
LOG_INFO("dvr_duration_sec = " + std::to_string(dvr_duration_sec_));
|
||||||
}
|
|
||||||
|
// 自动根据 dvr_duration 启动扫描线程
|
||||||
|
startAutoScan(dvr_duration_sec_);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -84,6 +87,49 @@ bool RecordManager::loadSrsConfig()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RecordManager::startAutoScan(int interval_sec)
|
||||||
|
{
|
||||||
|
scan_interval_sec_ = interval_sec; // ← 保存扫描周期
|
||||||
|
if (running_) return;
|
||||||
|
|
||||||
|
running_ = true;
|
||||||
|
|
||||||
|
scan_thread_ = std::thread(
|
||||||
|
[this]()
|
||||||
|
{
|
||||||
|
LOG_INFO("[RecordManager] Auto-scan thread started, interval = " + std::to_string(scan_interval_sec_) +
|
||||||
|
" seconds.");
|
||||||
|
|
||||||
|
while (running_)
|
||||||
|
{
|
||||||
|
auto t0 = std::chrono::steady_clock::now();
|
||||||
|
|
||||||
|
this->scanAll();
|
||||||
|
LOG_INFO("[RecordManager] scanAll() completed.");
|
||||||
|
|
||||||
|
// 休眠剩余时间
|
||||||
|
auto t1 = std::chrono::steady_clock::now();
|
||||||
|
auto used_ms = std::chrono::duration_cast<std::chrono::milliseconds>(t1 - t0).count();
|
||||||
|
int sleep_ms = scan_interval_sec_ * 1000 - used_ms;
|
||||||
|
if (sleep_ms < 100) sleep_ms = 100;
|
||||||
|
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(sleep_ms));
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_INFO("[RecordManager] Auto-scan thread stopped.");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void RecordManager::stopAutoScan()
|
||||||
|
{
|
||||||
|
if (!running_) return;
|
||||||
|
|
||||||
|
running_ = false;
|
||||||
|
if (scan_thread_.joinable()) scan_thread_.join();
|
||||||
|
|
||||||
|
LOG_INFO("[RecordManager] Auto-scan thread stopped.");
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// 扫描所有文件
|
// 扫描所有文件
|
||||||
//
|
//
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user