add echo to testshell and modify mqsend
This commit is contained in:
@@ -13,16 +13,51 @@
|
||||
extern std::list<std::string> errorList;
|
||||
extern std::list<std::string> warnList;
|
||||
extern std::list<std::string> normalList;
|
||||
extern std::list<std::string> debugList;
|
||||
|
||||
// 开关
|
||||
extern bool errorOutputEnabled;
|
||||
extern bool warnOutputEnabled;
|
||||
extern bool normalOutputEnabled;
|
||||
extern bool debugOutputEnabled;
|
||||
|
||||
void redirectErrorOutput(bool enabled);
|
||||
void redirectWarnOutput(bool enabled);
|
||||
void redirectNormalOutput(bool enabled);
|
||||
void redirectDebugOutput(bool enabled);
|
||||
|
||||
extern pthread_mutex_t errorListMutex;
|
||||
extern pthread_mutex_t warnListMutex;
|
||||
extern pthread_mutex_t normalListMutex;
|
||||
extern pthread_mutex_t debugListMutex;
|
||||
|
||||
// **声明原始 echo_msgX(),让编译器知道它们存在**
|
||||
void real_echo_msg(const char *format, ...);
|
||||
|
||||
// **拦截所有 `echo_msgX()`,让它同时存入 `normalList`**
|
||||
#define echo_msgX(format, ...) \
|
||||
do { \
|
||||
real_echo_msg(format, ##__VA_ARGS__); /* 调用原始 `echo_msgX()` */ \
|
||||
char buffer[1024]; \
|
||||
snprintf(buffer, sizeof(buffer), format, ##__VA_ARGS__); \
|
||||
pthread_mutex_lock(&normalListMutex); \
|
||||
normalList.push_back(buffer); \
|
||||
pthread_mutex_unlock(&normalListMutex); \
|
||||
} while (0)
|
||||
|
||||
// **宏自动展开不同的 `echo_msg` 变体**
|
||||
#define echo_msg1 echo_msgX
|
||||
#define echo_msg2 echo_msgX
|
||||
#define echo_msg3 echo_msgX
|
||||
#define echo_msg4 echo_msgX
|
||||
#define echo_msg5 echo_msgX
|
||||
#define echo_msg6 echo_msgX
|
||||
#define echo_msg7 echo_msgX
|
||||
#define echo_msg8 echo_msgX
|
||||
#define echo_msg9 echo_msgX
|
||||
#define echo_msg10 echo_msgX
|
||||
#define echo_msg11 echo_msgX
|
||||
// **如果有更多的 `echo_msgX()`,继续定义**
|
||||
|
||||
extern "C"
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user