Skip to content

bruinfish/ndn.cxx

 
 

Repository files navigation

NDN.cxx: C++ NDN API (using CCNx C Library)

People often feel confusing and tedious when using CCNx C library, and this is an attempt to make it easier to program NDN applications using C++.

This API remotely resembles PyCCN API if you by any chance have already got yourself familiar with that.

The functions included are be roughly devided into two categories: NDN operations and async operations.

  1. NDN Operations

This is a set of functions that provide relative easier ways to perform NDN operations, including manipulating NDN names, content objects, interests, sending interests, callbacks (closure) for content objects, name prefix discovery, signature verifications, etc.. There is also a blocking API to fetch content object.

  1. Async Operations

Communications in NDN is mostly async. There is an event thread running NDN and processing the NDN events (e.g. interests received, expired, content received, etc..). As such, you don't really want to do a lot of processing in the NDN event thread (which blocks processing of that events). Hence we provide a simple executor API, which allows you to process the events in separate threads. We also provide a scheduler which allows you to scheduler various events as you wish. The scheduler is based on libevent C API.

  1. Build and Install

To see more options, use ./waf configure --help. For default install, use

./waf configure
./waf
sudo ./waf install

If you're using Mac OS X, Macport's g++ is not recommended. It may cause mysterious memory error with tinyxml. Use clang++ or Apple's g++ instead.

Normally, default install goes to /usr/local. If you have added /usr/local/lib/pkgconfig to your PKG_CONFIG_PATH, then you can compile your code like this:

g++ code.cpp `pkg-config --cflags --libs libndn.cxx`
  1. Examples

example/ directory contains a fully working example of simple client and server applications written using NDN.cxx API.

There is also an extensive usage of this library in ChronoShare.

Releases

No releases published

Packages

No packages published

Languages

  • C++ 89.5%
  • Python 4.4%
  • CSS 2.1%
  • Objective-C 1.9%
  • C 1.7%
  • JavaScript 0.4%