Firefly: A Lightweight Asynchronous IO Library
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Firefly: A Lightweight Asynchronous IO Library

firefly is built on the top of epoll as an abstraction layer. It is aimed to be as light, efficient and fast as possible. So we avoid making it tooooo complex. Firefly is here to make the life easier.



  • built on top of 'epoll', most efficient system call for async io.
  • extremely easy to use. make a firefly instance, define on_read function, firefly.fire_event_loop(), and you're good to go!
  • it knows your message size, buffers messages on different file descriptors and calls on_read when it's ready.
  • on_connection_accept, on_connection_close methods are customizable.
  • supports threadpool and workerpool
  • add any other file descriptor to the event loop, firefly will take care of them.

3-Step Usage:

// 1. include the library
#include "firefly.h"

// 2. define on_read, on_connection_accept, on_connection_close methods
int firefly::on_read(char *buffer){
    printf("data read: %s\n", buffer);
    return 1;
int firefly::on_connection_accept(int fd, char* host, char* port){
    printf("Accepted connection on descriptor %d (host=%s, port=%s)\n", fd, host, port);
    return 1;
int firefly::on_connection_close(int fd){
    printf("Connetion on descriptor %d is closed!\n", fd);
    return 1;

// 3. create an event loop instance in the main function
firefly event_loop(port, message_size);

// done! wasn't so simple? :)

* Firefly is a work in progress, published under Gnu Public License v3.0. Please feel free to use, contribute or sending me your valuable feedbacks. r68karimi [at] gmail [dot] com