add echo to testshell and modify mqsend
This commit is contained in:
@@ -125,9 +125,9 @@ extern std::string G_MQCONSUMER_KEY_LOG;//key
|
||||
extern std::string G_LOG_TOPIC;//topie
|
||||
extern std::string G_LOG_TAG;//tag
|
||||
extern std::string G_LOG_KEY;//key
|
||||
extern pthread_mutex_t errorListMutex;
|
||||
extern pthread_mutex_t warnListMutex;
|
||||
extern pthread_mutex_t normalListMutex;
|
||||
|
||||
bool showinshellflag =false;
|
||||
|
||||
|
||||
#define APRTIME_8H (28800000000ULL)
|
||||
#define APRTIME_1H (3600000000ULL)
|
||||
@@ -599,42 +599,77 @@ void KafkaSendThread::run()
|
||||
bool log_gotten;
|
||||
log_gotten = false;
|
||||
|
||||
|
||||
|
||||
if (normalOutputEnabled) {
|
||||
// <20><><EFBFBD><EFBFBD> normalOutputEnabled Ϊ 1<><31><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD> normalList <20><>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD> normalList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
if (!normalList.empty()) {
|
||||
|
||||
//qDebug() << "flag of list:" << normalOutputEnabled << " " << warnOutputEnabled << " " << errorOutputEnabled << " " << "warnList size: " << warnList.size() << "normalList size: " << normalList.size() << "errorList size: " << errorList.size()<<endl;
|
||||
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(normalList.front());
|
||||
normalList.pop_front();
|
||||
if(!showinshellflag){
|
||||
if (debugOutputEnabled) {
|
||||
// <20><><EFBFBD><EFBFBD> normalOutputEnabled <20><> warnOutputEnabled <20><>Ϊ 0<><30><EFBFBD><EFBFBD> errorOutputEnabled Ϊ 1<><31>ȡ errorList <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD> errorList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&debugListMutex);
|
||||
if (!debugList.empty()) {
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(errorList.front());
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>հ<EFBFBD><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>
|
||||
if (log_send.strText.trimmed().isEmpty()) {
|
||||
debugList.pop_front(); // ֱ<>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||
log_gotten = false; // <20><><EFBFBD><EFBFBD>û<EFBFBD>л<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
|
||||
} else {
|
||||
debugList.pop_front(); // ֻ<>зǿհ<C7BF><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&errorListMutex);
|
||||
}
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
} else if (warnOutputEnabled) {
|
||||
// <20><><EFBFBD><EFBFBD> normalOutputEnabled Ϊ 0<><30><EFBFBD><EFBFBD> warnOutputEnabled Ϊ 1<><31><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD> warnList <20><>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD> warnList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&warnListMutex);
|
||||
if (!warnList.empty()) {
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(warnList.front());
|
||||
warnList.pop_front();
|
||||
else if (normalOutputEnabled) {
|
||||
// <20><><EFBFBD><EFBFBD> normalOutputEnabled Ϊ 1<><31><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD> normalList <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD> normalList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
if (!normalList.empty()) {
|
||||
|
||||
//qDebug() << "flag of list:" << normalOutputEnabled << " " << warnOutputEnabled << " " << errorOutputEnabled << " " << "warnList size: " << warnList.size() << "normalList size: " << normalList.size() << "errorList size: " << errorList.size()<<endl;
|
||||
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(normalList.front());
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>հ<EFBFBD><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>
|
||||
if (log_send.strText.trimmed().isEmpty()) {
|
||||
normalList.pop_front(); // ֱ<>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||
log_gotten = false; // <20><><EFBFBD><EFBFBD>û<EFBFBD>л<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
|
||||
} else {
|
||||
normalList.pop_front(); // ֻ<>зǿհ<C7BF><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
} else if (warnOutputEnabled) {
|
||||
// <20><><EFBFBD><EFBFBD> normalOutputEnabled Ϊ 0<><30><EFBFBD><EFBFBD> warnOutputEnabled Ϊ 1<><31><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD> warnList <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD> warnList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&warnListMutex);
|
||||
if (!warnList.empty()) {
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(warnList.front());
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>հ<EFBFBD><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>
|
||||
if (log_send.strText.trimmed().isEmpty()) {
|
||||
warnList.pop_front(); // ֱ<>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||
log_gotten = false; // <20><><EFBFBD><EFBFBD>û<EFBFBD>л<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
|
||||
} else {
|
||||
warnList.pop_front(); // ֻ<>зǿհ<C7BF><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&warnListMutex);
|
||||
} else if (errorOutputEnabled) {
|
||||
// <20><><EFBFBD><EFBFBD> normalOutputEnabled <20><> warnOutputEnabled <20><>Ϊ 0<><30><EFBFBD><EFBFBD> errorOutputEnabled Ϊ 1<><31>ȡ errorList <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD> errorList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&errorListMutex);
|
||||
if (!errorList.empty()) {
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(errorList.front());
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>հ<EFBFBD><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>
|
||||
if (log_send.strText.trimmed().isEmpty()) {
|
||||
errorList.pop_front(); // ֱ<>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||
log_gotten = false; // <20><><EFBFBD><EFBFBD>û<EFBFBD>л<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־
|
||||
} else {
|
||||
errorList.pop_front(); // ֻ<>зǿհ<C7BF><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&errorListMutex);
|
||||
}
|
||||
pthread_mutex_unlock(&warnListMutex);
|
||||
} else if (errorOutputEnabled) {
|
||||
// <20><><EFBFBD><EFBFBD> normalOutputEnabled <20><> warnOutputEnabled <20><>Ϊ 0<><30><EFBFBD><EFBFBD> errorOutputEnabled Ϊ 1<><31>ȡ errorList <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD> errorList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&errorListMutex);
|
||||
if (!errorList.empty()) {
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(errorList.front());
|
||||
errorList.pop_front();
|
||||
}
|
||||
pthread_mutex_unlock(&errorListMutex);
|
||||
}
|
||||
}
|
||||
|
||||
if (log_gotten) {
|
||||
//qDebug() << "send log to topic:" << log_send.strTopic << endl;
|
||||
@@ -1508,6 +1543,10 @@ void parse_log(const std::string& json_str) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
||||
redirectNormalOutput(true);
|
||||
}
|
||||
else if (level == "DEBUG"){
|
||||
// <20><><EFBFBD><EFBFBD> debug (ֻ<>浽 debugList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ն<EFBFBD>)
|
||||
redirectDebugOutput(true);
|
||||
}
|
||||
else{
|
||||
std::cout << "level error" <<std::endl;
|
||||
}
|
||||
@@ -1525,7 +1564,11 @@ void parse_log(const std::string& json_str) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
||||
redirectNormalOutput(false);
|
||||
}
|
||||
else if (level == "DEBUG"){
|
||||
redirectDebugOutput(false);
|
||||
}
|
||||
else{
|
||||
redirectDebugOutput(false);
|
||||
redirectErrorOutput(false);
|
||||
redirectWarnOutput(false);
|
||||
redirectNormalOutput(false);
|
||||
|
||||
153
json/save2json.h
153
json/save2json.h
@@ -28,10 +28,16 @@ extern "C" {
|
||||
#include <map>
|
||||
#include <list>
|
||||
|
||||
|
||||
#include <QThread>
|
||||
|
||||
//lnk20250106
|
||||
#include "../include/rocketmq/SimpleProducer.h"
|
||||
//<2F><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
#include "../cfg_parse/custom_printf.h"//lnk20250225
|
||||
#include <csignal>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <QTcpServer>
|
||||
#include <QTcpSocket>
|
||||
#include <QMutex>
|
||||
@@ -102,6 +108,8 @@ protected:
|
||||
void run();
|
||||
};*/
|
||||
//lnk20250106
|
||||
extern bool showinshellflag;
|
||||
|
||||
class Worker : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -112,7 +120,9 @@ public:
|
||||
server(NULL),
|
||||
TEST_NUM(G_TEST_NUM),
|
||||
timer(NULL),
|
||||
historyIndex(-1)
|
||||
historyIndex(-1),
|
||||
stopViewLog(false),
|
||||
activeClient(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -121,6 +131,8 @@ public:
|
||||
stopServer();
|
||||
}
|
||||
|
||||
void handleViewLogCommand(const QString& command, QTcpSocket* clientSocket);
|
||||
|
||||
public slots:
|
||||
void startServer() {
|
||||
if (server) {
|
||||
@@ -225,65 +237,67 @@ private slots:
|
||||
for (int i = 0; i < data.size(); ++i) {
|
||||
char c = data[i];
|
||||
|
||||
switch (c) {
|
||||
case '\r':
|
||||
case '\n':
|
||||
// <20><><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!currentCommand.isEmpty()) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>¼<EFBFBD><C2BC>
|
||||
if (commandHistory.isEmpty() || commandHistory.last() != currentCommand) {
|
||||
commandHistory.append(currentCommand);
|
||||
}
|
||||
historyIndex = commandHistory.size(); // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֮<EFBFBD><D6AE>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
processCommand(currentCommand, clientSocket);
|
||||
currentCommand.clear();
|
||||
} else {
|
||||
// <20><><EFBFBD><EFBFBD>ֻ<EFBFBD>ǿ<EFBFBD><C7BF>У<EFBFBD><D0A3><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
clientSocket->write("\n> ");
|
||||
if (c == 'q') { // ? <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> `q` <20>˳<EFBFBD> `viewlog`
|
||||
std::cout << "Received 'q' from shell socket! Exiting viewlog...\n";
|
||||
if (activeClient == clientSocket) {
|
||||
stopViewLog = true; // ? <20><> `viewlog` <20>˳<EFBFBD>
|
||||
showinshellflag = false;
|
||||
clientSocket->write("\nLog view stopped. Returning to shell.\n> ");
|
||||
clientSocket->flush();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\x1b':
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ESC <20><><EFBFBD><EFBFBD>
|
||||
// <20>ϼ<EFBFBD>ͷ: \x1b[A
|
||||
// <20>¼<EFBFBD>ͷ: \x1b[B
|
||||
if (i + 2 < data.size() && data[i+1] == '[') {
|
||||
char arrow = data[i+2];
|
||||
if (arrow == 'A') {
|
||||
// <20>ϼ<EFBFBD>ͷ
|
||||
handleUpArrow(clientSocket);
|
||||
} else if (arrow == 'B') {
|
||||
// <20>¼<EFBFBD>ͷ
|
||||
handleDownArrow(clientSocket);
|
||||
}
|
||||
// <20>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>ֽ<EFBFBD>: \x1b [ X
|
||||
i += 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case '\x7f':
|
||||
case '\x08':
|
||||
// <20>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Del<65><6C>Backspace<63><65>
|
||||
if (!currentCommand.isEmpty()) {
|
||||
currentCommand.chop(1); // ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD>
|
||||
// <20><><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD> + <20>ٻ<EFBFBD><D9BB><EFBFBD>
|
||||
// "\b \b"<22><><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>˸<EFBFBD>
|
||||
clientSocket->write("\b \b");
|
||||
clientSocket->flush();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// <20><>ͨ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ӵ<EFBFBD> currentCommand <20><>
|
||||
currentCommand.append(c);
|
||||
// <20><><EFBFBD>Ե<EFBFBD><D4B5>ͻ<EFBFBD><CDBB><EFBFBD>
|
||||
clientSocket->write(&c, 1);
|
||||
clientSocket->flush();
|
||||
break;
|
||||
return; // ? <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
||||
}
|
||||
|
||||
switch (c) {
|
||||
case '\r':
|
||||
case '\n':
|
||||
// ? <20><><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!currentCommand.isEmpty()) {
|
||||
if (commandHistory.isEmpty() || commandHistory.last() != currentCommand) {
|
||||
commandHistory.append(currentCommand);
|
||||
}
|
||||
historyIndex = commandHistory.size(); // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֮<EFBFBD><D6AE>
|
||||
|
||||
processCommand(currentCommand, clientSocket);
|
||||
currentCommand.clear();
|
||||
} else {
|
||||
clientSocket->write("\n> ");
|
||||
clientSocket->flush();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\x1b':
|
||||
// ? <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>ϼ<EFBFBD>ͷ `\x1b[A`<60><><EFBFBD>¼<EFBFBD>ͷ `\x1b[B`)
|
||||
if (i + 2 < data.size() && data[i+1] == '[') {
|
||||
char arrow = data[i+2];
|
||||
if (arrow == 'A') {
|
||||
handleUpArrow(clientSocket); // **<2A><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>**
|
||||
} else if (arrow == 'B') {
|
||||
handleDownArrow(clientSocket); // **<2A><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>**
|
||||
}
|
||||
i += 2; // ? **<2A><><EFBFBD><EFBFBD> ESC <20><><EFBFBD><EFBFBD> `\x1b[A` <20><> `\x1b[B`**
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
||||
case '\x7f':
|
||||
case '\x08':
|
||||
// ? <20><><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD>
|
||||
if (!currentCommand.isEmpty()) {
|
||||
currentCommand.chop(1);
|
||||
clientSocket->write("\b \b");
|
||||
clientSocket->flush();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// ? <20><>ͨ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ӵ<EFBFBD> `currentCommand`
|
||||
currentCommand.append(c);
|
||||
clientSocket->write(&c, 1);
|
||||
clientSocket->flush();
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,6 +305,10 @@ signals:
|
||||
void serverError();
|
||||
|
||||
private:
|
||||
// ====================== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> =========================
|
||||
bool stopViewLog; // ? <20><><EFBFBD>ﲻ<EFBFBD><EFB2BB>Ҫ static<69><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF> client
|
||||
QTcpSocket* activeClient; // <20><>¼<EFBFBD><C2BC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD> `viewlog` <20>Ŀͻ<C4BF><CDBB><EFBFBD>
|
||||
|
||||
// --------------------
|
||||
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// --------------------
|
||||
@@ -315,11 +333,16 @@ private:
|
||||
helpText += "only - Execute rocketmq_test_only\n";
|
||||
helpText += "log - Execute rocketmq_test_log\n";
|
||||
helpText += "ledger <id> - Execute ledger with optional terminal_id\n";
|
||||
helpText += "viewlog <level> - View logs (ERROR, WARN, NORMAL, DEBUG)\n";
|
||||
helpText += "value <valuename> - Execute value print with valuename : iedcount frontfun frontindex remtable\n";
|
||||
helpText += "exit - Exit the shell\n";
|
||||
helpText += "help - Show this help message\n";
|
||||
clientSocket->write(helpText.toUtf8());
|
||||
}
|
||||
else if (command.startsWith("viewlog")) {
|
||||
showinshellflag = true;
|
||||
handleViewLogCommand(command, clientSocket);
|
||||
}
|
||||
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
else if (command.startsWith("TEST_NUM=")) {
|
||||
bool ok;
|
||||
@@ -439,12 +462,11 @@ private:
|
||||
historyIndex--;
|
||||
currentCommand = commandHistory[historyIndex];
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ<EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>س<EFBFBD><D8B3><EFBFBD><EFBFBD>ÿո<D5B8>)
|
||||
clientSocket->write("\r");
|
||||
clientSocket->write(" ");
|
||||
clientSocket->write("\r> ");
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
clientSocket->write(currentCommand.toUtf8());
|
||||
// **<2A><><EFBFBD>յ<EFBFBD>ǰ<EFBFBD><C7B0>**
|
||||
clientSocket->write("\r"); // <20>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>굽<EFBFBD><EAB5BD><EFBFBD><EFBFBD>
|
||||
clientSocket->write(" "); // <20>ÿո<D5B8>
|
||||
clientSocket->write("\r> "); // <20><><EFBFBD>´<EFBFBD>ӡ<EFBFBD><D3A1>ʾ<EFBFBD><CABE>
|
||||
clientSocket->write(currentCommand.toUtf8()); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
clientSocket->flush();
|
||||
}
|
||||
}
|
||||
@@ -457,14 +479,15 @@ private:
|
||||
historyIndex++;
|
||||
currentCommand = commandHistory[historyIndex];
|
||||
|
||||
// **<2A><><EFBFBD>յ<EFBFBD>ǰ<EFBFBD><C7B0>**
|
||||
clientSocket->write("\r");
|
||||
clientSocket->write(" ");
|
||||
clientSocket->write("\r> ");
|
||||
clientSocket->write(currentCommand.toUtf8());
|
||||
clientSocket->write(currentCommand.toUtf8()); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
clientSocket->flush();
|
||||
}
|
||||
else if (historyIndex == commandHistory.size() - 1) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ٰ<EFBFBD><D9B0>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٰ<EFBFBD><EFBFBD>¼<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
|
||||
historyIndex = commandHistory.size();
|
||||
currentCommand.clear();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user