You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
3.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2016 The ZLToolKit project authors. All Rights Reserved.
*
* This file is part of ZLToolKit(https://github.com/ZLMediaKit/ZLToolKit).
*
* Use of this source code is governed by MIT license that can be found in the
* LICENSE file in the root of the source tree. All contributing project authors
* may be found in the AUTHORS file in the root of the source tree.
*/
#include <csignal>
#include "Util/util.h"
#include "Util/logger.h"
#include "Util/NoticeCenter.h"
using namespace std;
using namespace toolkit;
//广播名称1 [AUTO-TRANSLATED:a6c535ee]
// Broadcast Name 1
#define NOTICE_NAME1 "NOTICE_NAME1"
//广播名称2 [AUTO-TRANSLATED:50cd7f16]
// Broadcast Name 2
#define NOTICE_NAME2 "NOTICE_NAME2"
//程序退出标记 [AUTO-TRANSLATED:2fc12083]
// Program Exit Flag
bool g_bExitFlag = false;
int main() {
//设置程序退出信号处理函数 [AUTO-TRANSLATED:419fb1c3]
// Set Program Exit Signal Handler
signal(SIGINT, [](int){g_bExitFlag = true;});
//设置日志 [AUTO-TRANSLATED:50372045]
// Set Log
Logger::Instance().add(std::make_shared<ConsoleChannel>());
//对事件NOTICE_NAME1新增一个监听 [AUTO-TRANSLATED:c8e83e55]
// Add a Listener to the Event NOTICE_NAME1
//addListener方法第一个参数是标签用来删除监听时使用 [AUTO-TRANSLATED:918a506c]
// The First Parameter of the addListener Method is a Tag, Used to Delete the Listener
//需要注意的是监听回调的参数列表个数类型需要与emitEvent广播时的完全一致否则会有无法预知的错误 [AUTO-TRANSLATED:b36668f5]
// Note that the Number and Type of Parameters in the Listener Callback Must be Exactly the Same as Those in the emitEvent Broadcast, Otherwise Unpredictable Errors May Occur
NoticeCenter::Instance().addListener(0,NOTICE_NAME1,
[](int &a,const char * &b,double &c,string &d){
DebugL << a << " " << b << " " << c << " " << d;
NoticeCenter::Instance().delListener(0,NOTICE_NAME1);
NoticeCenter::Instance().addListener(0,NOTICE_NAME1,
[](int &a,const char * &b,double &c,string &d){
InfoL << a << " " << b << " " << c << " " << d;
});
});
//监听NOTICE_NAME2事件 [AUTO-TRANSLATED:36bfaf8a]
// Listen for the NOTICE_NAME2 Event
NoticeCenter::Instance().addListener(0,NOTICE_NAME2,
[](string &d,double &c,const char *&b,int &a){
DebugL << a << " " << b << " " << c << " " << d;
NoticeCenter::Instance().delListener(0,NOTICE_NAME2);
NoticeCenter::Instance().addListener(0,NOTICE_NAME2,
[](string &d,double &c,const char *&b,int &a){
WarnL << a << " " << b << " " << c << " " << d;
});
});
int a = 0;
while(!g_bExitFlag){
const char *b = "b";
double c = 3.14;
string d("d");
//每隔1秒广播一次事件如果无法确定参数类型可加强制转换 [AUTO-TRANSLATED:dc815907]
// Broadcast the Event Every 1 Second, If the Parameter Type is Uncertain, a Forced Conversion Can be Added
NoticeCenter::Instance().emitEvent(NOTICE_NAME1,++a,(const char *)"b",c,d);
NoticeCenter::Instance().emitEvent(NOTICE_NAME2,d,c,b,a);
sleep(1); // sleep 1 second
}
return 0;
}