Skip to content

juanfrnz/events

Repository files navigation

events

C++11 wrapper for libev.

#include "events.hpp"
#include "tcpclient.hpp"
#include "tcpserver.hpp"

int main() {
    try {
        tcpserver server(5555);
        tcpclient client("localhost", 5555);

        events ev;
        ev.onSignal(SIGINT, 
                    [](event_signal_watcher* watcher) {
                        cout << "SIGINT received." << endl;
                        watcher->self->stop();
                    });
        ev.onTimer(0, 5,
                   [](event_timer_watcher* watcher) {
                       cout << "Timer triggered 5secs." << endl;
                   });

        ev.onRead(server.fd(),
                  [&server, &ev](event_io_watcher* watcher) {
                      int childfd = server.accept();
                      cout << "Client connected." << endl;
                      ev.onTimer(0, 1,
                                 [childfd](event_timer_watcher* watcher) {
                                     string msg = "Hello";
                                     write(childfd, msg.data(), msg.length());
                                 });
                  });

        ev.onTimer(1, 0,
                   [&client, &ev](event_timer_watcher* watcher) {
                       client.connect();
                       ev.onRead(client.fd(),
                                 [&client](event_io_watcher* watcher) {
                                     char buf[100];
                                     read(client.fd(), &buf, sizeof(buf));
                                     cout << "Message received: " << buf << endl;
                                     fflush(NULL);
                                 });
                   });

        ev.run();
       
    } catch(string& exception) {
        cerr << exception << endl;
    }

    return 0;
}

About

C++11 wrapper for libev

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published