recall modify
This commit is contained in:
@@ -55,6 +55,7 @@ extern std::string subdir;
|
||||
|
||||
extern int G_TEST_NUM;
|
||||
extern int G_TEST_TYPE;
|
||||
extern int LEDGER_MAX_ITEMS;
|
||||
|
||||
extern bool errorOutputEnabled;
|
||||
extern bool warnOutputEnabled;
|
||||
@@ -259,6 +260,11 @@ extern bool normalOutputEnabled;
|
||||
G_TEST_TYPE = type;
|
||||
}
|
||||
|
||||
void Worker::setMaxItems(int items) {
|
||||
std::lock_guard<std::mutex> locker(testMutex);
|
||||
LEDGER_MAX_ITEMS = items;
|
||||
}
|
||||
|
||||
// 日志控制
|
||||
void Worker::setTestlog(bool flag) {
|
||||
redirectErrorOutput(flag);
|
||||
@@ -323,7 +329,12 @@ extern bool normalOutputEnabled;
|
||||
int flag = std::atoi(cmd.substr(4).c_str());
|
||||
setTestlog(flag);
|
||||
sendStr(clientFD, "\r\x1B[KLOG updated\r\n");
|
||||
} else if (cmd == "rc") {
|
||||
}else if (cmd.find("MAX=") == 0) {
|
||||
int flag = std::atoi(cmd.substr(4).c_str());
|
||||
setMaxItems(flag);
|
||||
sendStr(clientFD, "\r\x1B[KMAX_ITEMS updated\r\n");
|
||||
}
|
||||
else if (cmd == "rc") {
|
||||
rocketmq_test_rc(m_front);
|
||||
sendStr(clientFD, "\r\x1B[KExecuted rocketmq_test_rc\r\n");
|
||||
} else if (cmd == "getdir") {
|
||||
@@ -410,7 +421,7 @@ extern bool normalOutputEnabled;
|
||||
|
||||
void Worker::printLedgerinshell(const terminal_dev& dev, int fd) {
|
||||
// —— 显示控制:最多打印的元素数量(防止过长)——
|
||||
constexpr size_t MAX_ITEMS = 5; // 可按需调整或删除限制
|
||||
const size_t MAX_ITEMS = static_cast<size_t>(LEDGER_MAX_ITEMS); // 非 constexpr
|
||||
|
||||
std::ostringstream os;
|
||||
os << "\r\x1B[K------------------------------------\n";
|
||||
@@ -602,6 +613,152 @@ void Worker::printLedgerinshell(const terminal_dev& dev, int fd) {
|
||||
os << "\r\x1B[K |.. (+" << (n - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// ========================= ★新增:补招打印 =========================
|
||||
// ★新增:小工具—把状态/阶段枚举转成可读字符串
|
||||
auto recallStatusStr = [](int st) -> const char* {
|
||||
switch (st) {
|
||||
case 0: return "NOT_STARTED(0)";
|
||||
case 1: return "RUNNING(1)";
|
||||
case 2: return "DONE(2)";
|
||||
case 3: return "FAILED(3)";
|
||||
default: return "UNKNOWN";
|
||||
}
|
||||
};
|
||||
auto phaseStr = [](RecallPhase p) -> const char* {
|
||||
switch (p) {
|
||||
case RecallPhase::IDLE: return "IDLE";
|
||||
case RecallPhase::LISTING: return "LISTING";
|
||||
case RecallPhase::DOWNLOADING: return "DOWNLOADING";
|
||||
}
|
||||
return "UNKNOWN";
|
||||
};
|
||||
auto resultStr = [](ActionResult r) -> const char* {
|
||||
switch (r) {
|
||||
case ActionResult::PENDING: return "PENDING";
|
||||
case ActionResult::FAIL: return "FAIL";
|
||||
case ActionResult::OK: return "OK";
|
||||
}
|
||||
return "UNKNOWN";
|
||||
};
|
||||
|
||||
// --- ★新增:事件补招(RecallMonitor) ---
|
||||
os << "\r\x1B[K |-- Recall(Event) (" << ld.recall_list.size() << "):\n";
|
||||
{
|
||||
size_t idx = 0;
|
||||
for (const auto& r : ld.recall_list) {
|
||||
if (idx++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- [" << (idx-1) << "] "
|
||||
<< "status=" << recallStatusStr(r.recall_status)
|
||||
<< ", StartTime=" << r.StartTime
|
||||
<< ", EndTime=" << r.EndTime
|
||||
<< ", STEADY=" << r.STEADY
|
||||
<< ", VOLTAGE=" << r.VOLTAGE
|
||||
<< "\n";
|
||||
}
|
||||
if (ld.recall_list.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (ld.recall_list.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// --- ★新增:稳态补招(RecallFile)+ 状态机信息 ---
|
||||
os << "\r\x1B[K |-- Recall(Static Files) (" << ld.recall_list_static.size() << "):\n";
|
||||
{
|
||||
size_t idx = 0;
|
||||
for (const auto& rf : ld.recall_list_static) {
|
||||
if (idx++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- [" << (idx-1) << "] "
|
||||
<< "status=" << recallStatusStr(rf.recall_status)
|
||||
<< ", StartTime=" << rf.StartTime
|
||||
<< ", EndTime=" << rf.EndTime
|
||||
<< ", STEADY=" << rf.STEADY
|
||||
<< ", VOLTAGE=" << rf.VOLTAGE
|
||||
<< "\n";
|
||||
|
||||
// ★新增:直下模式与目标时间列表
|
||||
os << "\r\x1B[K |-- direct_mode=" << (rf.direct_mode ? "true" : "false")
|
||||
<< ", target_filetimes(" << rf.target_filetimes.size() << ")\n";
|
||||
{
|
||||
size_t c = 0;
|
||||
for (const auto& t : rf.target_filetimes) {
|
||||
if (c++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- " << t << "\n";
|
||||
}
|
||||
if (rf.target_filetimes.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (rf.target_filetimes.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// ★新增:状态机运行态
|
||||
os << "\r\x1B[K |-- phase=" << phaseStr(rf.phase)
|
||||
<< ", cur_dir_index=" << rf.cur_dir_index
|
||||
<< ", cur_dir=" << rf.cur_dir << "\n";
|
||||
os << "\r\x1B[K |-- list_result=" << resultStr(rf.list_result)
|
||||
<< ", download_result=" << resultStr(rf.download_result) << "\n";
|
||||
|
||||
// ★新增:候选目录
|
||||
os << "\r\x1B[K |-- dir_candidates(" << rf.dir_candidates.size() << ")\n";
|
||||
{
|
||||
size_t c = 0;
|
||||
for (const auto& d : rf.dir_candidates) {
|
||||
if (c++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- " << d << "\n";
|
||||
}
|
||||
if (rf.dir_candidates.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (rf.dir_candidates.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// ★新增:目录 -> 文件名列表(仅概要)
|
||||
os << "\r\x1B[K |-- dir_files(" << rf.dir_files.size() << " dirs)\n";
|
||||
{
|
||||
size_t c = 0;
|
||||
for (const auto& kv : rf.dir_files) {
|
||||
if (c++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- [" << (c-1) << "] dir=" << kv.first
|
||||
<< " files=" << kv.second.size() << "\n";
|
||||
}
|
||||
if (rf.dir_files.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (rf.dir_files.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// ★新增:下载队列(概要)
|
||||
os << "\r\x1B[K |-- download_queue(" << rf.download_queue.size() << ")\n";
|
||||
{
|
||||
size_t c = 0;
|
||||
for (const auto& path : rf.download_queue) {
|
||||
if (c++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- " << path << "\n";
|
||||
}
|
||||
if (rf.download_queue.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (rf.download_queue.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// ★新增:当前下载中文件
|
||||
if (!rf.downloading_file.empty()) {
|
||||
os << "\r\x1B[K |-- downloading: " << rf.downloading_file << "\n";
|
||||
}
|
||||
|
||||
// ★新增:已下载/待上报的完整路径(file_paths)
|
||||
os << "\r\x1B[K |-- file_paths(" << rf.file_paths.size() << ")\n";
|
||||
{
|
||||
size_t c = 0;
|
||||
for (const auto& p : rf.file_paths) {
|
||||
if (c++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- " << p << "\n";
|
||||
}
|
||||
if (rf.file_paths.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (rf.file_paths.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ld.recall_list_static.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (ld.recall_list_static.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
// ======================= ★新增:补招打印结束 =======================
|
||||
}
|
||||
|
||||
os << "\r\x1B[K------------------------------------\n";
|
||||
|
||||
Reference in New Issue
Block a user