finish log realdata send funtion
This commit is contained in:
@@ -434,11 +434,13 @@ public:
|
||||
&queueNum // 传递给选择器的额外参数(队列数量)
|
||||
);
|
||||
|
||||
//调试用
|
||||
/*
|
||||
if (sendResult == 0) { // 假设返回 0 表示成功
|
||||
std::cout << "Message sent successfully.topic:" << topic <<std::endl;
|
||||
} else {
|
||||
std::cout << "Failed to send message." << std::endl;
|
||||
}
|
||||
}*/
|
||||
|
||||
// 销毁消息
|
||||
DestroyMessage(msg);
|
||||
|
||||
@@ -4353,7 +4353,7 @@ int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml)
|
||||
}
|
||||
}
|
||||
else {
|
||||
std::cout << "No matching XML files found." << std::endl;
|
||||
//std::cout << "No matching XML files found." << std::endl;//<2F><><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>Ҫ<EFBFBD>Ĵ<EFBFBD>ӡ
|
||||
return APR_EGENERAL;
|
||||
}
|
||||
|
||||
@@ -7429,7 +7429,7 @@ void SendWebAPI_web(const string strUrl, const char* code, char** ptr)
|
||||
{
|
||||
char url[100];
|
||||
sprintf(url, "%s?%s", strUrl.c_str(), code);
|
||||
printf(">>>json %s\n", url);
|
||||
//printf(">>>json %s\n", url);//<2F><><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>Ҫ<EFBFBD>Ĵ<EFBFBD>ӡ
|
||||
// <20><><EFBFBD><EFBFBD>URL
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
|
||||
@@ -11454,7 +11454,7 @@ void SendJsonAPI_web(const std::string& strUrl, const char* code, const std::str
|
||||
if (curl) {
|
||||
char url[256];
|
||||
snprintf(url, sizeof(url), "%s?%s", strUrl.c_str(), code);
|
||||
printf(">>>json %s\n", url);
|
||||
//printf(">>>json %s\n", url);//<2F><><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>Ҫ<EFBFBD>Ĵ<EFBFBD>ӡ
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply_http);
|
||||
@@ -14357,7 +14357,7 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
rptinfo_t **rptinfo = NULL;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>
|
||||
printf("check error111 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error111 !!!!!!!!!!!!!!\n");
|
||||
|
||||
|
||||
|
||||
@@ -14376,14 +14376,14 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>
|
||||
printf("check error112 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error112 !!!!!!!!!!!!!!\n");
|
||||
|
||||
//////// //<2F><>¼ԭ<C2BC>еı<D0B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
loginfo = ied_usr->LD_info[cpuno - 1].loginfo?ied_usr->LD_info[cpuno - 1].loginfo:NULL;
|
||||
rptinfo = ied_usr->LD_info[cpuno - 1].rptinfo?ied_usr->LD_info[cpuno - 1].rptinfo:NULL;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>
|
||||
printf("check error113 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error113 !!!!!!!!!!!!!!\n");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<DAB4><E6A3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>Ѵ<EFBFBD><D1B4>ڵ<EFBFBD>ied<65><64><EFBFBD><EFBFBD>ô<EFBFBD><C3B4>֮ǰ<D6AE><C7B0>ʼ<EFBFBD><CABC><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>˹<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>̨<EFBFBD><CCA8>ʱû<CAB1><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (ied_usr->LD_info[cpuno - 1].ht_fcd != NULL) {
|
||||
@@ -14394,7 +14394,7 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>
|
||||
printf("check error116 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error116 !!!!!!!!!!!!!!\n");
|
||||
|
||||
//<2F><>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ڴ棬<DAB4><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>ɾ<EFBFBD><C9BE>ʱ<EFBFBD><CAB1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);
|
||||
@@ -14424,23 +14424,23 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ棬<DAB4><E6A3AC>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
memset(ied_usr->LD_info[cpuno - 1].LD_name, 0, 256);
|
||||
|
||||
printf("check error333 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error333 !!!!!!!!!!!!!!\n");
|
||||
|
||||
apr_cpystrn(ied_usr->LD_info[cpuno - 1].LD_name, str, 256); //ԭ<>пռ串<D5BC><E4B8B2>
|
||||
|
||||
printf("check error222 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error222 !!!!!!!!!!!!!!\n");
|
||||
}
|
||||
|
||||
ldname = ied_usr->LD_info[cpuno - 1].LD_name;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>
|
||||
printf("check error114 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error114 !!!!!!!!!!!!!!\n");
|
||||
|
||||
ied_usr->LD_info[cpuno - 1] = line_info;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA>棬<EFBFBD><E6A3AC>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD>ԭ<EFBFBD>е<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
ied_usr->LD_info[cpuno - 1].ied = ied; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA>棬<EFBFBD><E6A3AC>Ϊ<EFBFBD><CEAA>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD>ԭ<EFBFBD>е<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>
|
||||
printf("check error115 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error115 !!!!!!!!!!!!!!\n");
|
||||
|
||||
|
||||
|
||||
@@ -15166,127 +15166,232 @@ void rocketmq_test_300(int mpnum,int front_index) {
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////lnkʵʱ<CAB5><CAB1>־<EFBFBD><D6BE><EFBFBD><EFBFBD>20250205
|
||||
// ȫ<><C8AB><EFBFBD>б<EFBFBD><D0B1>Ϳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// ------------------ ȫ<><C8AB><EFBFBD><EFBFBD>־<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------------------
|
||||
std::list<std::string> errorList;
|
||||
std::list<std::string> warnList;
|
||||
std::list<std::string> normalList;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ȫ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_t errorListMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_mutex_t warnListMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_mutex_t errorListMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_mutex_t warnListMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_mutex_t normalListMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
bool errorOutputEnabled = false;
|
||||
bool warnOutputEnabled = false;
|
||||
bool normalOutputEnabled = false;
|
||||
|
||||
// <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
class RedirectStreamBuf : public std::streambuf {
|
||||
public:
|
||||
RedirectStreamBuf(std::list<std::string>& targetList, pthread_mutex_t& targetMutex)
|
||||
: targetList(targetList), targetMutex(targetMutex) {}
|
||||
|
||||
protected:
|
||||
virtual int_type overflow(int_type ch) override {
|
||||
if (ch != EOF) {
|
||||
char c = static_cast<char>(ch);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> targetList
|
||||
pthread_mutex_lock(&targetMutex);
|
||||
targetList.push_back(std::string(1, c));
|
||||
pthread_mutex_unlock(&targetMutex);
|
||||
}
|
||||
return ch;
|
||||
}
|
||||
|
||||
private:
|
||||
std::list<std::string>& targetList;
|
||||
pthread_mutex_t& targetMutex;
|
||||
// ------------------ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------------------
|
||||
bool errorOutputEnabled = false; // <20>Ƿ<EFBFBD><C7B7><EFBFBD> error <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4> errorList
|
||||
bool warnOutputEnabled = false; // <20>Ƿ<EFBFBD><C7B7><EFBFBD> warn <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4> warnList
|
||||
bool normalOutputEnabled = false; // <20>Ƿ<EFBFBD><C7B7><EFBFBD> normal <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4> normalList
|
||||
|
||||
// ------------------ <20><><EFBFBD>ڻָ<DABB>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------------------
|
||||
static std::streambuf* g_originalCoutBuf = NULL;
|
||||
static std::streambuf* g_originalClogBuf = NULL;
|
||||
static std::streambuf* g_originalCerrBuf = NULL;
|
||||
|
||||
// ------------------ <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ö<EFBFBD>٣<EFBFBD>C++98<39><38> ------------------
|
||||
enum LogLevel {
|
||||
LOG_ERROR,
|
||||
LOG_WARN,
|
||||
LOG_NORMAL
|
||||
};
|
||||
|
||||
// <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void redirectErrorOutput(bool enabled) {
|
||||
errorOutputEnabled = enabled;
|
||||
if (enabled) {
|
||||
static RedirectStreamBuf errorBuf(errorList, errorListMutex);
|
||||
std::cerr.rdbuf(&errorBuf);
|
||||
} else {
|
||||
std::cerr.rdbuf(nullptr); // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// TeeStreamBuf: <20><>д<EFBFBD><D0B4>ԭʼbuf(<28><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD><EFBFBD>list<73><74>
|
||||
// ------------------------------------------------------------------
|
||||
class TeeStreamBuf : public std::streambuf
|
||||
{
|
||||
public:
|
||||
// Ĭ<>Ϲ<EFBFBD><CFB9>죺<EFBFBD>Ȱ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ΪNULL
|
||||
TeeStreamBuf()
|
||||
: m_originalBuf(NULL), m_level(LOG_NORMAL)
|
||||
{
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ι<EFBFBD><CEB9>죺ֱ<ECA3BA>ӳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
TeeStreamBuf(std::streambuf* originalBuf, LogLevel level)
|
||||
: m_originalBuf(originalBuf), m_level(level)
|
||||
{
|
||||
}
|
||||
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD> init(...) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void init(std::streambuf* originalBuf, LogLevel level)
|
||||
{
|
||||
m_originalBuf = originalBuf;
|
||||
m_level = level;
|
||||
m_buffer.clear();
|
||||
}
|
||||
|
||||
protected:
|
||||
// <20><> flush <20><> std::endl ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sync()
|
||||
virtual int sync()
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ͬ<EFBFBD><CDAC>
|
||||
if (m_originalBuf) {
|
||||
m_originalBuf->pubsync();
|
||||
}
|
||||
// <20>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD> flush
|
||||
flushBuffer();
|
||||
return 0; // <20>ɹ<EFBFBD>
|
||||
}
|
||||
|
||||
// <20><>д<EFBFBD><D0B4>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ʱ<EFBFBD><CAB1>overflow() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
virtual int_type overflow(int_type ch)
|
||||
{
|
||||
if (ch == traits_type::eof()) {
|
||||
return ch;
|
||||
}
|
||||
// 1) д<><D0B4>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (m_originalBuf) {
|
||||
if (m_originalBuf->sputc(static_cast<char>(ch)) == traits_type::eof()) {
|
||||
return traits_type::eof();
|
||||
}
|
||||
}
|
||||
// 2) <20>浽<EFBFBD><E6B5BD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
m_buffer.push_back((char)ch);
|
||||
// 3) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD> flushBuffer()
|
||||
if (ch == '\n') {
|
||||
flushBuffer();
|
||||
}
|
||||
return ch;
|
||||
}
|
||||
|
||||
private:
|
||||
// <20><> m_buffer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>Ӧ list<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void flushBuffer()
|
||||
{
|
||||
if (m_buffer.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ݵȼ<DDB5> + <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> <20><> д<>ļ<EFBFBD><C4BC><EFBFBD>list
|
||||
switch (m_level) {
|
||||
|
||||
case LOG_ERROR:
|
||||
if (errorOutputEnabled) {
|
||||
pthread_mutex_lock(&errorListMutex);
|
||||
errorList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&errorListMutex);
|
||||
}
|
||||
if (warnOutputEnabled) {
|
||||
pthread_mutex_lock(&warnListMutex);
|
||||
warnList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&warnListMutex);
|
||||
}
|
||||
if (normalOutputEnabled) {
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
normalList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
}
|
||||
break;
|
||||
|
||||
case LOG_WARN:
|
||||
if (warnOutputEnabled) {
|
||||
pthread_mutex_lock(&warnListMutex);
|
||||
warnList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&warnListMutex);
|
||||
}
|
||||
if (normalOutputEnabled) {
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
normalList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
}
|
||||
break;
|
||||
|
||||
case LOG_NORMAL:
|
||||
if (normalOutputEnabled) {
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
normalList.push_back(m_buffer);
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
m_buffer.clear();
|
||||
}
|
||||
|
||||
private:
|
||||
// <20><>ֹ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ɵĸ<C9B5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> (C++98<39><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
TeeStreamBuf& operator=(const TeeStreamBuf&); // <20><>ʵ<EFBFBD><CAB5>
|
||||
|
||||
private:
|
||||
std::streambuf* m_originalBuf;
|
||||
LogLevel m_level;
|
||||
std::string m_buffer;
|
||||
};
|
||||
|
||||
// ------------------ ȫ<><C8AB>Tee<65><65><EFBFBD><EFBFBD><F3A3A8B1><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>ֵ<EFBFBD><D6B5> ------------------
|
||||
static TeeStreamBuf g_errorTeeBuf;
|
||||
static TeeStreamBuf g_warnTeeBuf;
|
||||
static TeeStreamBuf g_normalTeeBuf;
|
||||
|
||||
// ------------------ <20>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------------------
|
||||
// ֻ<>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> init(...) <20><>ʼ<EFBFBD><CABC> TeeStreamBuf<75><66>
|
||||
// ֮<><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> new <20><> <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5><C4B6><EFBFBD><EFBFBD><EFBFBD>
|
||||
void redirectErrorOutput(bool enabled)
|
||||
{
|
||||
errorOutputEnabled = enabled;
|
||||
if (enabled) {
|
||||
if (g_originalCerrBuf == NULL) {
|
||||
g_originalCerrBuf = std::cerr.rdbuf();
|
||||
g_errorTeeBuf.init(g_originalCerrBuf, LOG_ERROR);
|
||||
}
|
||||
std::cerr.rdbuf(&g_errorTeeBuf);
|
||||
} else {
|
||||
if (g_originalCerrBuf) {
|
||||
std::cerr.rdbuf(g_originalCerrBuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>澯<EFBFBD><E6BEAF><EFBFBD><EFBFBD>
|
||||
void redirectWarnOutput(bool enabled) {
|
||||
warnOutputEnabled = enabled;
|
||||
if (enabled) {
|
||||
static RedirectStreamBuf warnBuf(warnList, warnListMutex);
|
||||
std::clog.rdbuf(&warnBuf);
|
||||
std::cerr.rdbuf(&warnBuf);
|
||||
} else {
|
||||
std::clog.rdbuf(nullptr); // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>澯<EFBFBD><E6BEAF>
|
||||
std::cerr.rdbuf(nullptr); // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
void redirectWarnOutput(bool enabled)
|
||||
{
|
||||
warnOutputEnabled = enabled;
|
||||
if (enabled) {
|
||||
if (g_originalClogBuf == NULL) {
|
||||
g_originalClogBuf = std::clog.rdbuf();
|
||||
g_warnTeeBuf.init(g_originalClogBuf, LOG_WARN);
|
||||
}
|
||||
std::clog.rdbuf(&g_warnTeeBuf);
|
||||
} else {
|
||||
if (g_originalClogBuf) {
|
||||
std::clog.rdbuf(g_originalClogBuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
||||
void redirectNormalOutput(bool enabled) {
|
||||
normalOutputEnabled = enabled;
|
||||
if (enabled) {
|
||||
static RedirectStreamBuf normalBuf(normalList, normalListMutex);
|
||||
std::cout.rdbuf(&normalBuf);
|
||||
std::clog.rdbuf(&normalBuf);
|
||||
std::cerr.rdbuf(&normalBuf);
|
||||
} else {
|
||||
std::cout.rdbuf(nullptr); // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::clog.rdbuf(nullptr); // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>澯<EFBFBD><E6BEAF>
|
||||
std::cerr.rdbuf(nullptr); // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
void redirectNormalOutput(bool enabled)
|
||||
{
|
||||
normalOutputEnabled = enabled;
|
||||
if (enabled) {
|
||||
if (g_originalCoutBuf == NULL) {
|
||||
g_originalCoutBuf = std::cout.rdbuf();
|
||||
g_normalTeeBuf.init(g_originalCoutBuf, LOG_NORMAL);
|
||||
}
|
||||
std::cout.rdbuf(&g_normalTeeBuf);
|
||||
} else {
|
||||
if (g_originalCoutBuf) {
|
||||
std::cout.rdbuf(g_originalCoutBuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// <20>Զ<EFBFBD><EFBFBD><EFBFBD> printf <20><EFBFBD><EFBFBD><EFBFBD>
|
||||
int customPrintf(const char* format, ...) {
|
||||
// ------------------ <20>Զ<EFBFBD><D4B6><EFBFBD> printf <20><><EFBFBD><EFBFBD> ------------------
|
||||
// <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> normal <20><><EFBFBD><EFBFBD> => <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>normalList(<28><><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD>)
|
||||
int customPrintf(const char* format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
|
||||
char buffer[1024];
|
||||
|
||||
// <20>ȸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> buffer
|
||||
int written = vsnprintf(buffer, sizeof(buffer), format, args);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ԭʼ va_list
|
||||
va_end(args);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (written < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĿ<EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>
|
||||
if (errorOutputEnabled) {
|
||||
pthread_mutex_lock(&errorListMutex);
|
||||
errorList.push_back(buffer);
|
||||
pthread_mutex_unlock(&errorListMutex);
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>std::cout<75><74><EFBFBD>Ӷ<EFBFBD>TeeStreamBuf<EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD>
|
||||
std::cout << buffer << std::endl;
|
||||
|
||||
if (warnOutputEnabled) {
|
||||
pthread_mutex_lock(&warnListMutex);
|
||||
warnList.push_back(buffer);
|
||||
pthread_mutex_unlock(&warnListMutex);
|
||||
}
|
||||
|
||||
if (normalOutputEnabled) {
|
||||
pthread_mutex_lock(&normalListMutex);
|
||||
normalList.push_back(buffer);
|
||||
pthread_mutex_unlock(&normalListMutex);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF>ض<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ԭ<EFBFBD><D4AD> printf <20><><EFBFBD><EFBFBD>
|
||||
if (!errorOutputEnabled && !warnOutputEnabled && !normalOutputEnabled) {
|
||||
// ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>
|
||||
std::cout << buffer << std::endl; // ʹ<><CAB9> std::cout <20><><EFBFBD><EFBFBD> printf <20><><EFBFBD>ij<EFBFBD>ͻ
|
||||
}
|
||||
|
||||
return written; // <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>ӡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
return written;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -1216,7 +1216,7 @@ bool ParseXMLConfig2(int xml_flag, XmlConfig *cfg, list<CTopic*> *ctopiclist,QSt
|
||||
if (strDAName.indexOf("l_phs*") >= 0){ //DA<44><41><EFBFBD><EFBFBD>"l_phs*"//lnk20250221<32><31><EFBFBD>ν<EFBFBD><CEBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>PPV
|
||||
strDAName = strDAName.replace("l_phs", "phs");
|
||||
strDAName = strDAName.replace("*", strLine[n]);
|
||||
qDebug() << "strDAName:" << strDAName << endl;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//qDebug() << "strDAName:" << strDAName << endl;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
} //<2F><>DA<44><41><EFBFBD><EFBFBD>*<2A>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA) <20><><EFBFBD><EFBFBD>phsAB$cVal$mag$f
|
||||
|
||||
else if (strDAName.indexOf("phs*") >= 0) {//DA<44><41><EFBFBD><EFBFBD>"phs*"
|
||||
@@ -3986,7 +3986,7 @@ void connectlog_pgsql(char* id,char* datetime,int status)
|
||||
return;
|
||||
}
|
||||
|
||||
std::cout << "jsonString" << jsonString << std::endl;
|
||||
//std::cout << "jsonString: " << jsonString << std::endl;////<2F><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>Ĵ<EFBFBD>ӡ
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Զ<EFBFBD><D4B6>
|
||||
SendJsonAPI_web(WEB_COMFLAG, "", jsonString,&ptr);
|
||||
@@ -3994,7 +3994,7 @@ void connectlog_pgsql(char* id,char* datetime,int status)
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD> ptr <20>Ƿ<EFBFBD>Ϊ NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD> std::string <20><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
|
||||
if (ptr != NULL) {
|
||||
handleCommentResponse(std::string(ptr));
|
||||
//handleCommentResponse(std::string(ptr));//<2F><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>Ĵ<EFBFBD>ӡ
|
||||
free(ptr); // <20><><EFBFBD><EFBFBD> SendJsonAPI_web <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<DAB4>ǵ<EFBFBD><C7B5>ͷ<EFBFBD>
|
||||
} else {
|
||||
// <20><><EFBFBD><EFBFBD> ptr Ϊ NULL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
@@ -344,6 +344,7 @@ void my_rocketmq_send(Ckafka_data_t& data)
|
||||
else
|
||||
{
|
||||
topic = data.strTopic.toStdString();
|
||||
|
||||
}
|
||||
if (g_onlyIP[0] != 0)
|
||||
{
|
||||
@@ -598,12 +599,17 @@ void KafkaSendThread::run()
|
||||
bool log_gotten;
|
||||
log_gotten = false;
|
||||
|
||||
|
||||
|
||||
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()) {
|
||||
data_gotten = true;
|
||||
|
||||
//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();
|
||||
}
|
||||
@@ -613,7 +619,7 @@ void KafkaSendThread::run()
|
||||
// <20><><EFBFBD><EFBFBD> warnList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&warnListMutex);
|
||||
if (!warnList.empty()) {
|
||||
data_gotten = true;
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(warnList.front());
|
||||
warnList.pop_front();
|
||||
}
|
||||
@@ -623,7 +629,7 @@ void KafkaSendThread::run()
|
||||
// <20><><EFBFBD><EFBFBD> errorList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pthread_mutex_lock(&errorListMutex);
|
||||
if (!errorList.empty()) {
|
||||
data_gotten = true;
|
||||
log_gotten = true;
|
||||
log_send.strText = QString::fromStdString(errorList.front());
|
||||
errorList.pop_front();
|
||||
}
|
||||
@@ -631,9 +637,9 @@ void KafkaSendThread::run()
|
||||
}
|
||||
|
||||
if (log_gotten) {
|
||||
//qDebug() << "send log to topic:" << log_send.strTopic << endl;
|
||||
static uint32_t count = 0;
|
||||
printf("BEGIN current log send no.%i -------->>>>>>>>>>>> %s \n", count,
|
||||
QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz").toAscii().data());
|
||||
//printf("BEGIN current log send no.%i -------->>>>>>>>>>>> %s \n", count,QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz").toAscii().data());
|
||||
my_rocketmq_send(log_send);
|
||||
}
|
||||
|
||||
@@ -1520,7 +1526,10 @@ void parse_log(const std::string& json_str) {
|
||||
redirectNormalOutput(false);
|
||||
}
|
||||
else{
|
||||
std::cout << "level error" <<std::endl;
|
||||
redirectErrorOutput(false);
|
||||
redirectWarnOutput(false);
|
||||
redirectNormalOutput(false);
|
||||
std::cout << "close all log" <<std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
267
json/save2json.h
267
json/save2json.h
@@ -102,15 +102,20 @@ protected:
|
||||
void run();
|
||||
};*/
|
||||
//lnk20250106
|
||||
//ʹ<><CAB9>telnet 127.0.0.1 12345<34><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Worker : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Worker(QObject *parent = NULL) : QObject(parent), server(NULL), TEST_NUM(G_TEST_NUM) {
|
||||
timer = NULL;
|
||||
Worker(QObject *parent = NULL)
|
||||
: QObject(parent),
|
||||
server(NULL),
|
||||
TEST_NUM(G_TEST_NUM),
|
||||
timer(NULL),
|
||||
historyIndex(-1)
|
||||
{
|
||||
}
|
||||
|
||||
~Worker() {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
||||
stopServer();
|
||||
@@ -155,7 +160,7 @@ public slots:
|
||||
server = NULL;
|
||||
qDebug() << "Server stopped.";
|
||||
}
|
||||
|
||||
|
||||
// ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1>
|
||||
if (timer) {
|
||||
timer->stop();
|
||||
@@ -190,8 +195,10 @@ private slots:
|
||||
qDebug() << "New connection established!";
|
||||
std::cout << "New connection established!\n";
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿɶ<DDBF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> onReadyRead()
|
||||
connect(clientSocket, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
||||
connect(clientSocket, SIGNAL(disconnected()), clientSocket, SLOT(deleteLater())); // <20>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ͻ<EFBFBD><EFBFBD>˶Ͽ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> socket
|
||||
connect(clientSocket, SIGNAL(disconnected()), clientSocket, SLOT(deleteLater()));
|
||||
|
||||
// <20><><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
if (clientSocket) {
|
||||
@@ -201,6 +208,10 @@ private slots:
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ֽڴ<D6BD><DAB4><EFBFBD>Telnet<65><74><EFBFBD>룬ʶ<EBA3AC><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD>˸س<F1A1A2BB><D8B3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>»س<C2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBDBB> processCommand <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void onReadyRead() {
|
||||
QTcpSocket *clientSocket = qobject_cast<QTcpSocket *>(sender());
|
||||
if (!clientSocket) {
|
||||
@@ -209,29 +220,91 @@ private slots:
|
||||
}
|
||||
|
||||
QByteArray data = clientSocket->readAll();
|
||||
QString command = QString::fromUtf8(data).trimmed(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EEB2A2><C8A5>ǰ<EFBFBD><C7B0><EFBFBD>ո<EFBFBD>
|
||||
|
||||
// <20><><EFBFBD>ֽڴ<D6BD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
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> ");
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
signals:
|
||||
void serverError();
|
||||
|
||||
private:
|
||||
// --------------------
|
||||
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// --------------------
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>)<29><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD> onReadyRead() <20><><EFBFBD><EFBFBD> if-else <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void processCommand(const QString &command, QTcpSocket *clientSocket) {
|
||||
// <20><>ӡ<EFBFBD><D3A1>־
|
||||
qDebug() << "Received command:" << command;
|
||||
std::cout << "Received command: " << command.toStdString() << "\n";
|
||||
|
||||
// <20>洢<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!command.isEmpty() && (commandHistory.isEmpty() || command != commandHistory.last())) {
|
||||
commandHistory.append(command);
|
||||
historyIndex = commandHistory.size(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
// <20>洢<EFBFBD><E6B4A2>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
if (!currentCommand.isEmpty() && command != "up" && command != "down" && command != "\x7f") {
|
||||
currentCommand.append(command);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7>͡<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롱<EFBFBD><EBA1B1><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Received command\n> ");
|
||||
clientSocket->flush();
|
||||
clientSocket->write("test_shell> ");
|
||||
clientSocket->flush(); // ȷ<><C8B7><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> help <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>Ϊԭ<EFBFBD><EFBFBD> onReadyRead() <20>е<EFBFBD> if / else if <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ------------------------------------------------------
|
||||
if (command == "help") {
|
||||
QString helpText = "Available commands:\n";
|
||||
helpText += "TEST_NUM=<num> - Set the TEST_NUM\n";
|
||||
@@ -239,12 +312,13 @@ private slots:
|
||||
helpText += "rt - Execute rocketmq_test_rt\n";
|
||||
helpText += "ud - Execute rocketmq_test_ud\n";
|
||||
helpText += "set - Execute rocketmq_test_set\n";
|
||||
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 += "value <valuename> - Execute value print with valuename : iedcount frontfun frontindex remtable\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());
|
||||
|
||||
}
|
||||
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
else if (command.startsWith("TEST_NUM=")) {
|
||||
@@ -252,10 +326,10 @@ private slots:
|
||||
int num = command.mid(9).toInt(&ok); // <20><>ȡ<EFBFBD>Ⱥź<C8BA><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
|
||||
if (ok) {
|
||||
setTestNum(num); // <20><><EFBFBD><EFBFBD> TEST_NUM
|
||||
clientSocket->write("TEST_NUM updated\n> ");
|
||||
clientSocket->write("TEST_NUM updated\n");
|
||||
std::cout << "TEST_NUM updated\n";
|
||||
} else {
|
||||
clientSocket->write("Invalid number\n> ");
|
||||
clientSocket->write("Invalid number\n");
|
||||
std::cout << "Invalid number\n";
|
||||
}
|
||||
}
|
||||
@@ -264,35 +338,42 @@ private slots:
|
||||
qDebug() << "Executing rocketmq_test_rc()";
|
||||
std::cout << "Executing rocketmq_test_rc()\n";
|
||||
rocketmq_test_rc(); // <20><><EFBFBD><EFBFBD> rc <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_rc\n> ");
|
||||
clientSocket->write("Executed rocketmq_test_rc\n");
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("rt")) {
|
||||
qDebug() << "Executing rocketmq_test_rt()";
|
||||
std::cout << "Executing rocketmq_test_rt()\n";
|
||||
rocketmq_test_rt(); // <20><><EFBFBD><EFBFBD> rt <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_rt\n> ");
|
||||
clientSocket->write("Executed rocketmq_test_rt\n");
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>²<EFBFBD><C2B2><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("ud")) {
|
||||
qDebug() << "Executing rocketmq_test_ud()";
|
||||
std::cout << "Executing rocketmq_test_ud()\n";
|
||||
rocketmq_test_ud(); // <20><><EFBFBD><EFBFBD> ud <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_ud\n> ");
|
||||
clientSocket->write("Executed rocketmq_test_ud\n");
|
||||
}
|
||||
// <20><><EFBFBD>ͽ<EFBFBD><CDBD>̿<EFBFBD><CCBF>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("set")) {
|
||||
qDebug() << "Executing rocketmq_test_set()";
|
||||
std::cout << "Executing rocketmq_test_set()\n";
|
||||
rocketmq_test_set(); // <20><><EFBFBD><EFBFBD> set <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_set\n> ");
|
||||
clientSocket->write("Executed rocketmq_test_set\n");
|
||||
}
|
||||
// <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̲<EFBFBD><CCB2><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("only")) {
|
||||
qDebug() << "Executing rocketmq_test_only()";
|
||||
std::cout << "Executing rocketmq_test_only()\n";
|
||||
rocketmq_test_only(); // <20><><EFBFBD><EFBFBD> set <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_only\n> ");
|
||||
rocketmq_test_only(); // <20><><EFBFBD><EFBFBD> rocketmq_test_only <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_only\n");
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("log")) {
|
||||
qDebug() << "Executing rocketmq_test_log()";
|
||||
std::cout << "Executing rocketmq_test_log()\n";
|
||||
rocketmq_test_log(); // <20><><EFBFBD><EFBFBD> log <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_log\n");
|
||||
}
|
||||
// <20>鿴<EFBFBD><E9BFB4>ǰ<EFBFBD><C7B0><EFBFBD>̵<EFBFBD>̨<EFBFBD><CCA8>
|
||||
else if (command.startsWith("ledger")) {
|
||||
@@ -305,64 +386,30 @@ private slots:
|
||||
QString terminalId = parts[1];
|
||||
std::cout << "Calling ledger with terminal_id: " << terminalId.toStdString() << std::endl;
|
||||
|
||||
// <20>ģ<DEB8><C4A3><EFBFBD><EFBFBD><EFBFBD> ledger ʱ<><CAB1><EFBFBD><EFBFBD> clientSocket <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
ledger(terminalId.toStdString().c_str(), clientSocket); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ledger<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> clientSocket
|
||||
|
||||
clientSocket->write("Executed ledger with terminal_id\n> ");
|
||||
ledger(terminalId.toStdString().c_str(), clientSocket); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ledger
|
||||
clientSocket->write("Executed ledger with terminal_id\n");
|
||||
} else {
|
||||
std::cout << "Calling ledger without parameters\n";
|
||||
|
||||
// <20>ģ<DEB8><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD> ledger<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> clientSocket
|
||||
ledger(NULL, clientSocket); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD> ledger<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> clientSocket
|
||||
|
||||
clientSocket->write("Executed ledger without parameters\n> ");
|
||||
ledger(NULL, clientSocket); // <20><EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ledger
|
||||
clientSocket->write("Executed ledger without parameters\n");
|
||||
}
|
||||
}
|
||||
// <20>鿴<EFBFBD><E9BFB4>ǰ<EFBFBD><C7B0><EFBFBD>̵<EFBFBD>ָ<EFBFBD><D6B8>ֵ
|
||||
else if (command.startsWith("value")) {
|
||||
std::cout << "Executing value()" << std::endl;
|
||||
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QStringList parts = command.split(" "); // <20><><EFBFBD>ݿո<DDBF><D5B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (parts.size() > 1) { // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QStringList parts = command.split(" ");
|
||||
if (parts.size() > 1) {
|
||||
QString variableName = parts[1];
|
||||
|
||||
std::cout << "Calling value() with variable name: " << variableName.toStdString() << std::endl;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> value() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
value_print(variableName.toStdString().c_str(), clientSocket); // <20><><EFBFBD><EFBFBD> value() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
clientSocket->write("Executed value with variable name: " + variableName.toUtf8() + "\n> ");
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> value_print() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
value_print(variableName.toStdString().c_str(), clientSocket);
|
||||
clientSocket->write("Executed value with variable name: " + variableName.toUtf8() + "\n");
|
||||
} else {
|
||||
std::cout << "Calling value without parameters" << std::endl;
|
||||
|
||||
// <20><>ʾ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Please provide a variable name\n> ");
|
||||
}
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ
|
||||
if (command == "up") {
|
||||
if (historyIndex > 0) {
|
||||
historyIndex--;
|
||||
clientSocket->write(commandHistory[historyIndex].toUtf8());
|
||||
} else {
|
||||
clientSocket->write("No previous command\n> ");
|
||||
}
|
||||
} else if (command == "down") {
|
||||
if (historyIndex < commandHistory.size() - 1) {
|
||||
historyIndex++;
|
||||
clientSocket->write(commandHistory[historyIndex].toUtf8());
|
||||
} else {
|
||||
clientSocket->write("No next command\n> ");
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> backspace <20><>
|
||||
else if (command == "\x7f") {
|
||||
if (!currentCommand.isEmpty()) {
|
||||
currentCommand.chop(1); // ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD>
|
||||
clientSocket->write(currentCommand.toUtf8());
|
||||
clientSocket->write("Please provide a variable name\n");
|
||||
}
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD> exit <20><><EFBFBD><EFBFBD>
|
||||
@@ -372,26 +419,72 @@ private slots:
|
||||
clientSocket->flush();
|
||||
clientSocket->disconnectFromHost(); // <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
||||
clientSocket->waitForDisconnected(); // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>ӶϿ<D3B6>
|
||||
return;
|
||||
}
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
|
||||
else {
|
||||
clientSocket->write("Unknown command\n> ");
|
||||
clientSocket->write("Unknown command\n");
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F3A3ACBB><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
clientSocket->write("> ");
|
||||
clientSocket->flush();
|
||||
}
|
||||
|
||||
signals:
|
||||
void serverError();
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>¼<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void handleUpArrow(QTcpSocket *clientSocket) {
|
||||
if (!commandHistory.isEmpty() && historyIndex > 0) {
|
||||
historyIndex--;
|
||||
currentCommand = commandHistory[historyIndex];
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ף<EFBFBD><D7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ<EFBFBD><C7B0> (<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());
|
||||
clientSocket->flush();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>¼<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void handleDownArrow(QTcpSocket *clientSocket) {
|
||||
if (!commandHistory.isEmpty() && historyIndex < commandHistory.size() - 1) {
|
||||
historyIndex++;
|
||||
currentCommand = commandHistory[historyIndex];
|
||||
|
||||
clientSocket->write("\r");
|
||||
clientSocket->write(" ");
|
||||
clientSocket->write("\r> ");
|
||||
clientSocket->write(currentCommand.toUtf8());
|
||||
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>
|
||||
historyIndex = commandHistory.size();
|
||||
currentCommand.clear();
|
||||
|
||||
clientSocket->write("\r");
|
||||
clientSocket->write(" ");
|
||||
clientSocket->write("\r> ");
|
||||
clientSocket->flush();
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
QList<QString> commandHistory; // <20>洢<EFBFBD><E6B4A2>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
int historyIndex = -1; // <20><>ǰ<EFBFBD><C7B0>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QString currentCommand; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
QTcpServer *server;
|
||||
QTimer *timer;
|
||||
int TEST_NUM;
|
||||
QMutex mutex;
|
||||
|
||||
// <20><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QList<QString> commandHistory; // <20>洢<EFBFBD><E6B4A2>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
int historyIndex; // <20><>ǰ<EFBFBD><C7B0>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QString currentCommand; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -368,7 +368,7 @@ void ChannelCheckIECReports(chnl_usr_t *chnl_usr)
|
||||
ied_usr = GET_IEDEXT_ADDR(ied);
|
||||
channel = chnl_usr->chnl;
|
||||
|
||||
printf("check error %s !!!!!!!!!!!!!!cpucount:%d\n",((ied_usr_t*)chnl_usr->chnl->ied->usr_ext)->terminal_id,(int)ied->cpucount);
|
||||
//printf("check error %s !!!!!!!!!!!!!!cpucount:%d\n",((ied_usr_t*)chnl_usr->chnl->ied->usr_ext)->terminal_id,(int)ied->cpucount);
|
||||
|
||||
//printf("1 chnl_usr->ip_str = %s \n",chnl_usr->ip_str);
|
||||
for(cpuno=0 ; cpuno<ied->cpucount; cpuno++)
|
||||
@@ -1260,7 +1260,7 @@ void check_ledger_update()//lnk20250113
|
||||
|
||||
|
||||
|
||||
printf("check ledger update...trigger_ledger_update_xml:%d\n",trigger_ledger_update_xml->modify_update_num);
|
||||
//printf("check ledger update...trigger_ledger_update_xml:%d\n",trigger_ledger_update_xml->modify_update_num);//<2F><><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>Ҫ<EFBFBD>Ĵ<EFBFBD>ӡ
|
||||
|
||||
last_check_3s_config_time = now; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
|
||||
@@ -1546,7 +1546,7 @@ void CheckNextNotConnectedChannel()
|
||||
chnl_total_no = (chnl_total_no+1) % g_pt61850app->chnl_counts;
|
||||
} while ( (g_onlyIP[0]!=0) && (strcmp(g_onlyIP,chnl_usr->ip_str)!=0) );
|
||||
|
||||
printf("check error chnl_total_no !!!!!!!!!!!!!! %d\n",chnl_total_no);
|
||||
//printf("check error chnl_total_no !!!!!!!!!!!!!! %d\n",chnl_total_no);
|
||||
|
||||
//10-11-01 22:03 beijing
|
||||
if( ( (chnl_total_no+1)==g_pt61850app->chnl_counts) || (g_onlyIP[0]!=0) ){
|
||||
@@ -1571,19 +1571,19 @@ void CheckNextNotConnectedChannel()
|
||||
//}
|
||||
}
|
||||
|
||||
printf("check error %s !!!!!!!!!!!!!!\n",((ied_usr_t*)chnl_usr->chnl->ied->usr_ext)->terminal_id);
|
||||
//printf("check error %s !!!!!!!!!!!!!!\n",((ied_usr_t*)chnl_usr->chnl->ied->usr_ext)->terminal_id);
|
||||
|
||||
if(chnl_usr->m_state == CHANNEL_CONNECTING)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
printf("check error93 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error93 !!!!!!!!!!!!!!\n");
|
||||
MVL_REQ_PEND* reqCtrl= chnl_usr->m_reqCtrl ;
|
||||
printf("check error60 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error60 !!!!!!!!!!!!!!\n");
|
||||
if( reqCtrl->done == SD_TRUE)
|
||||
{
|
||||
printf("check error92 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error92 !!!!!!!!!!!!!!\n");
|
||||
if(reqCtrl->result == SD_SUCCESS)
|
||||
{
|
||||
printf("check error91 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error91 !!!!!!!!!!!!!!\n");
|
||||
ALL_RCB_INFO *all_rcb_info;
|
||||
// cout<<endl<<endl<<pChannel->GetIP()<<" CHANNEL_CONNECTED netInfo "<<chnl_usr->net_info<<endl;
|
||||
echo_warn4("\nCHANNEL_CONNECTED %s:%d ,NetInfo= %x chnl_usr= %x \n",
|
||||
@@ -1621,16 +1621,16 @@ void CheckNextNotConnectedChannel()
|
||||
}
|
||||
else
|
||||
{// solaris 9 <20><> 224<32><34>
|
||||
printf("check error90 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error90 !!!!!!!!!!!!!!\n");
|
||||
int secsSince = (int)(sGetMsTime() - chnl_usr->m_StartConnectingTime)/1000 ;
|
||||
//cout<<"reqCtrl->result == FAIL, Since StartConnecting "<<secsSince<<"<22><> "<<pChannel->GetIP()<<" !!! "<<endl;
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
||||
if (g_node_id == STAT_DATA_BASE_NODE_ID || g_node_id == NEW_HIS_DATA_BASE_NODE_ID) {
|
||||
//lnk202411-4
|
||||
//connectlog_pgsql(ied_usr->terminal_code);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
printf("check error89 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error89 !!!!!!!!!!!!!!\n");
|
||||
connectlog_pgsql(ied_usr->terminal_code,convertMsToDateTimeString((int)sGetMsTime()),0);//0ʧ<30><CAA7>
|
||||
printf("check error88 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error88 !!!!!!!!!!!!!!\n");
|
||||
}
|
||||
printf( "reqCtrl->result == FAIL, Since StartConnecting %i <20><> ,channel IP %s:%d \n",secsSince,chnl_usr->ip_str,chnl_usr->chnl->port);
|
||||
mvl_free_req_ctrl(chnl_usr->m_reqCtrl);
|
||||
@@ -1642,7 +1642,7 @@ void CheckNextNotConnectedChannel()
|
||||
}
|
||||
else
|
||||
{//
|
||||
printf("check error61 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error61 !!!!!!!!!!!!!!\n");
|
||||
if ( (sGetMsTime() - chnl_usr->m_StartConnectingTime) > 300*1000 ) //300*1000 ) //wait 300 secs ?????
|
||||
{
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
||||
@@ -1677,13 +1677,13 @@ void CheckNextNotConnectedChannel()
|
||||
else if(chnl_usr->m_state == CHANNEL_DISCONNECTED)
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
printf("check error99 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error99 !!!!!!!!!!!!!!\n");
|
||||
|
||||
if ( (sGetMsTime() - chnl_usr->m_ClosedMsTime) > NEXT_CONNECT_TIME ) //wait 10 secs
|
||||
{
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
printf("check error98 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error98 !!!!!!!!!!!!!!\n");
|
||||
|
||||
ST_RET ret;
|
||||
ST_CHAR serverARName[32];
|
||||
@@ -1691,10 +1691,10 @@ void CheckNextNotConnectedChannel()
|
||||
apr_snprintf(serverARName,sizeof(serverARName),"%s:%d",chnl_usr->ip_str,chnl_usr->chnl->port);
|
||||
if (chnl_usr->chnl->ied->cpucount != NULL && chnl_usr->chnl->ied->cpucount > 0 && ied_usr->dev_flag == ENABLE) {//2023-09-26 czy <20><><EFBFBD><EFBFBD>line count<0 <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>//lnk20250121<32><31><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ret = mms_connectToServer(ied_usr->dev_key, ied_usr->dev_series, serverARName, &(chnl_usr->net_info), &(chnl_usr->m_reqCtrl));
|
||||
printf("check error73 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error73 !!!!!!!!!!!!!!\n");
|
||||
if (ret == SD_SUCCESS)
|
||||
{
|
||||
printf("check error74 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error74 !!!!!!!!!!!!!!\n");
|
||||
//if(chnl_usr->chnl->ied->id==virtual_ied){
|
||||
// chnl_usr->m_state = CHANNEL_CONNECTED;
|
||||
// chnl_usr->chnl->ied->status = STATUS_NORMAL;
|
||||
@@ -1717,15 +1717,15 @@ void CheckNextNotConnectedChannel()
|
||||
else
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
printf("check error97 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error97 !!!!!!!!!!!!!!\n");
|
||||
chnl_usr->m_ClosedMsTime = sGetMsTime();
|
||||
if (g_node_id == STAT_DATA_BASE_NODE_ID || g_node_id == NEW_HIS_DATA_BASE_NODE_ID) {
|
||||
//lnk202411-4
|
||||
//connectlog_pgsql(ied_usr->terminal_code);//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
printf("check error96 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error96 !!!!!!!!!!!!!!\n");
|
||||
connectlog_pgsql(ied_usr->terminal_code,convertMsToDateTimeString((int)sGetMsTime()),0);//0ʧ<30><CAA7>
|
||||
printf("check error95 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error95 !!!!!!!!!!!!!!\n");
|
||||
}
|
||||
echo_warn3("FAILED: mms_connectToServer IP %s:%d ,NetInfo= %x \n", chnl_usr->ip_str, chnl_usr->chnl->port, chnl_usr->net_info);
|
||||
}
|
||||
@@ -1735,11 +1735,11 @@ void CheckNextNotConnectedChannel()
|
||||
}//if(pChannel->m_state == CHANNEL_DISCONNECTED)
|
||||
else if(chnl_usr->m_state == CHANNEL_DISCONNECTING) //need check timeout?<3F><EFBFBD><E1B2BB><EFBFBD><EFBFBD>Զͣ<D4B6><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>???
|
||||
{
|
||||
printf("check error92 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error92 !!!!!!!!!!!!!!\n");
|
||||
MVL_REQ_PEND* reqCtrl= chnl_usr->m_reqCtrl ;
|
||||
if( reqCtrl->done == SD_TRUE)
|
||||
{
|
||||
printf("check error72 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error72 !!!!!!!!!!!!!!\n");
|
||||
//cout<<endl<<endl<<pChannel->GetIP()<<" CHANNEL_DISCONNECTING done"<<endl;
|
||||
echo_warn3( "CHANNEL_DISCONNECTING done %s:%d,NetInfo= %x ",chnl_usr->ip_str,chnl_usr->chnl->port,chnl_usr->net_info);
|
||||
mvl_free_req_ctrl(chnl_usr->m_reqCtrl);
|
||||
@@ -1754,7 +1754,7 @@ void CheckNextNotConnectedChannel()
|
||||
}
|
||||
else
|
||||
{//
|
||||
printf("check error70 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error70 !!!!!!!!!!!!!!\n");
|
||||
// cout<<endl<<endl<<pChannel->GetIP()<<" CHANNEL_DISCONNECTING waiting ..."<<endl;
|
||||
echo_warn2( "CHANNEL_DISCONNECTING waiting ... %s,NetInfo= %x ",chnl_usr->ip_str,chnl_usr->net_info);
|
||||
|
||||
@@ -1775,7 +1775,7 @@ void CheckNextNotConnectedChannel()
|
||||
}
|
||||
}//if(pChannel->m_state == CHANNEL_DISCONNECTING)
|
||||
//////////////////
|
||||
printf("check error77 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error77 !!!!!!!!!!!!!!\n");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -404,7 +404,7 @@ static void* APR_THREAD_FUNC rtdb_worker(apr_thread_t* thd, void* data)
|
||||
//pthread_mutex_lock(&mtx); printf("work hold lock !!!!!!!!!!!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
printf("check error4 !!!!!!!!!!!!!!\n");
|
||||
//printf("check error4 !!!!!!!!!!!!!!\n");
|
||||
|
||||
doCommService();//<2F><><EFBFBD><EFBFBD>61850<35><30>Ϣ
|
||||
|
||||
@@ -421,11 +421,11 @@ static void* APR_THREAD_FUNC rtdb_worker(apr_thread_t* thd, void* data)
|
||||
//check_recall_config();//<2F><><EFBFBD>ٽ<EFBFBD><D9BD>̶<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
create_recall_xml();//<2F><><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD><EFBFBD>xml<6D>ļ<EFBFBD>
|
||||
|
||||
pthread_mutex_lock(&mtx); printf("work hold lock !!!!!!!!!!!");
|
||||
pthread_mutex_lock(&mtx); //printf("work hold lock !!!!!!!!!!!");
|
||||
|
||||
check_ledger_update();//lnk20250113<31><33>ȡ̨<C8A1>˸<EFBFBD><CBB8>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8><EFBFBD>
|
||||
|
||||
pthread_mutex_unlock(&mtx); printf("work free lock !!!!!!!!!!!");
|
||||
pthread_mutex_unlock(&mtx); //printf("work free lock !!!!!!!!!!!");
|
||||
|
||||
//Check_Recall_Config();
|
||||
/*if ((g_protect_file) && (g_pt61850app->initNum>=MIN_INIT_NUM) ) {
|
||||
|
||||
Reference in New Issue
Block a user