Skip to content
C++11 library for network services on modern x86_64 Linux
C++ C Python CMake Shell Ragel in Ruby Host Other
Latest commit 00c6dcc Apr 25, 2015 @toffaletti Merge pull request #85 from toffaletti/prep-branch
Prep branch
Failed to load latest commit information.
benchmarks add option for channel buffer size Apr 2, 2013
cmake eliminate unused typedefs so warning need not be suppressed Oct 23, 2013
doc remove obsolete references to libboost-test-dev Oct 15, 2013
examples build tests and fix some examples bit rot Oct 17, 2013
googletest
include
src don't put canceled or deadlined tasks to sleep Nov 7, 2013
tests fix bug in channel clear Feb 4, 2014
.gitignore
.travis.yml
CMakeLists.txt
LICENSE
README.md

README.md

libten Build Status

C++11 library for network services on modern x86-64 Linux.

Features

  • lightweight cooperative tasks (using boost.context)
  • typed channels for communicating between threads and tasks
  • http client and server
  • fast uri parser
  • JSON parser (wrapper around jansson)
  • logging (glog)
  • rpc (using msgpack)
  • epoll event loop

Why

Or rather why not libevent, libev, or boost.asio? libten is designed around the concept of task-based concurrency, while the other libraries are designed for event driven concurrency with callbacks. They are not entirely at odds, libten's event loop could be built on any of these libraries. However, another major difference is that other libraries strive to provide a cross platform solution to event driven network programming. They are great if you need portable code that works across many versions and platforms. libten's approach is to focus only on modern Linux, modern compilers, and performance. This makes libten's code base smaller and easier to maintain, with very minimal abstraction. libten uses epoll, timerfd, and signalfd. In addition to networking and concurrency it provides logging, JSON, URI, http client and server, rpc, zookeeper and more.

API Stability

libten is not a stable API yet. Don't let this scare you away though. Most changes at this point are minor and incremental.

Dependencies

  • cmake >= 2.8
  • g++ >= 4.7.0
  • libssl-dev >= 0.9.8
  • libboost-dev >= 1.51
  • libboost-date-time-dev >= 1.51
  • libboost-program-options-dev >= 1.51
  • libboost-context-dev >= 1.51
  • ragel >= 6.5
  • libjansson-dev >= 2.3
  • libc-ares-dev

Bundled 3rd-party components


Something went wrong with that request. Please try again.