elesteel / EventEmitter

A simple EventEmitter in C++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

EventEmitter

A simple EventEmitter in C++

Tested on macOS

Dependency

Functor

Installation

$ sudo make install

Usage

#include <iostream>
#include <sstream>
#include <thread>
#include <vector>
#include "EventEmitter.hpp"

using namespace std;

class emitter : public EventEmitter {};

int main(int argc, const char * argv[]) {
    emitter emitter;
    emitter.on("event", [&emitter](int data) {
        ostringstream osstream;
        osstream << "[Listener 1] data: " << data << '\n';
        std::cout<<osstream.str();
    });
    emitter.on("event", [&emitter](int data) {
        ostringstream osstream;
        osstream << "[Listener 2] data: " << data << '\n';
        std::cout<<osstream.str();
    });
    emitter.once("event", [&emitter](int data) {
        ostringstream osstream;
        osstream << "[Once Listener] data: " << data << '\n';
        std::cout<<osstream.str();
    });
    
    std::cout<<emitter.listener_count("event")<<" listeners for 'event'\n";
    
    vector<thread> threads;
    for (int i = 0; i < 10; i++) {
        threads.emplace_back([&emitter, i]() {
            emitter.emit("event", i);
        });
    }
    
    for (auto &t : threads) t.join();
    
    std::cout<<emitter.listener_count("event")<<" listeners for 'event'\n";
}

Screenshots

Screenshots

About

A simple EventEmitter in C++


Languages

Language:C++ 96.2%Language:Makefile 3.8%