REACT-CPP - C++ 事件循环库
Apache-2.0
跨平台
C/C++
软件简介
REACT-CPP 是利用 C++ 11 的 lambda 表达式在文件描述符或定时器激活的时候进行通知的事件循环库。在它内部实质是对 libev
库的包装,因此也依赖于该库。
在一个典型的应用程序中,你创建了一个 mainloop 类的实例,然后注册你想要查看的 filedescriptors,注册事件处理程序和计时器:
#include <reactcpp.h>
#include <unistd.h>
#include <iostream>
/**
* Main application procedure
* @return int
*/
int main()
{
// create an event loop
React::MainLoop loop;
// set a timer to stop the application after five seconds
loop.onTimeout(5.0, []() {
// report that the timer expired
std::cout << "timer expired" << std::endl;
// stop the application
exit(0);
});
// we'd like to be notified when input is available on stdin
loop.onReadable(STDIN_FILENO, []() -> bool {
// read input
std::string buffer;
std::cin >> buffer;
// show what we read
std::cout << buffer << std::endl;
// return true, so that we also return future read events
return true;
});
// handler when control+c is pressed
loop.onSignal(SIGINT, []() -> bool {
// report that we got a signal
std::cout << "control+c detected" << std::endl;
// stop the application
exit(0);
// although this code is unreachable, we return false because
// we're no longer interested in future SIGINT signals
return false;
});
// run the event loop
loop.run();
// done
return 0;
}