Git Product home page Git Product logo

consumer-producer-api's Introduction

Consumer/Producer API: data transport library for NDN

Consumer abstraction model supports the following application patterns:

  • Sequential fetching of ADUs, with allowance of missing any ADU in the stream if necessary. This can be used to support real time media streaming applications.

  • Parallel fetching of ADUs to speed up content transfer. This can benefit applications like web download and torrent.

  • Fetching of individual, dynamically generated ADUs, as needed by web and IoT applications.

Producer abstraction model supports the following application patterns:

  • Realtime ADU publishing (and consumption), which can be used by a large number of applications including video conferencing, games, etc. Publishers may need to “wait for pull” and keep the ADUs in memory temporarily to handle a possible mismatch between production and consumption timing.

  • ADU publishing to stable storage, to support potentially large asynchronies between ADU publishing and consumption in terms of time, as well as in terms of data popularity (“publish once - consume multiple times”). This publication pattern can be beneficial for static content services, such as video and web-content backend applications.

  • ADU publishing to remote stable storage, to support mobile publishers and IoT publishers. This publication pattern allows smartphones and sensors to get around their resource limitations by moving the content to stable locations.

This library implements Simple Data Retrieval (SDR), Unreliable Data Retrieval (UDR) and Reliable Data Retrieval (RDR) Consumer / Producer Communication with Application Level Framing in Named Data Networking, and Infomax (IDR) protocol InfoMax: An Information Maximizing Transport Layer Protocol for Named Data Networks.

Consumer/Producer API uses ndn-cxx library as NDN development library.

Consumer/Producer API is an open source project licensed under GPL 3.0 (see COPYING.md for more detail). We highly welcome all contributions to the Consumer/Producer code base, provided that they can licensed under GPL 3.0+ or other compatible license.

Feedback

Please submit any bugs or issues to the Consumer/Producer API issue tracker:

Installation instructions

Prerequisites

Required:

Build

To build Consumer/Producer API from the source:

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

To build on memory constrained platform, please use ./waf -j1 instead of ./waf. The command will disable parallel compilation.

If configured with examples: ./waf configure --with-examples), the above commands will also generate test applications in ./build/examples

Test applications must be run in the following pairs:

  • Example of single-threaded non-blocking parallel consumption: async-producer & async-consumer

  • Example of changing the forwarding strategy for a specific namespace: broadcast-producer & broadcast-consumer

  • Example of Infomax Data Retrieval: idr-producer & dir-consumer

  • Example of embedding manifests (with no signature given): manifest-producer & manifest-consumer

  • Example of embedding manifest with a real signature: manifest-signing-performance & manifest-verification-performance

  • Example of chaining consume calls (consume() within another consume()): rdr-chaining-producer & rdr-chaining-consumer

  • Example of RDR built-in exclusion of content with invalid signature: rdr-exclude-producer & rdr-exclude-consumer

  • Example of RDR built-in processing of application Nacks: rdr-nack-delay-producer & rdr-nack-delay-consumer

  • Example of signing and verifying content: rdr-signing-performance & rdr-verification-performance

  • Example of using Simple Data Retrieval: sdr-producer & sdr-consumer

  • Example of manual exclusion using Simple Data Retrieval: sdr-exclude-producer & sdr-exclude-consumer

  • Example of sequential (in the loop) content production and consumption: sequential-producer & sequential-consumer

  • Example of using Unreliable Data Retrieval: udr-producer & udr-consumer

  • Example demonstrating fast retransmission in UDR: udr-fastretx-producer & udr-fastretx-consumer

consumer-producer-api's People

Contributors

cawka avatar hspedro avatar iliamo avatar ilyaucla avatar jdlee6461 avatar pedosb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

consumer-producer-api's Issues

Incompatible with ndn-cxx 0.7.1

I have recent ndn-cxx version 0.7.1-11-g5dc7560d. The library does not compile with recent versions of ndn-cxx.

$ ./waf -j1
Waf: Entering directory `/vagrant/Consumer-Producer-API/build'
[ 1/18] Compiling src/simple-data-retrieval.cpp
In file included from /usr/local/include/ndn-cxx/encoding/tlv.hpp:25:0,
                 from ../src/context-default-values.hpp:25,
                 from ../src/simple-data-retrieval.hpp:25,
                 from ../src/simple-data-retrieval.cpp:22:
/usr/local/include/ndn-cxx/detail/common.hpp:35:2: error: #error "ndn-cxx applications must be compiled using the C++14 standard (-std=c++14)"
 #error "ndn-cxx applications must be compiled using the C++14 standard (-std=c++14)"
  ^~~~~
In file included from ../src/context.hpp:25:0,
                 from ../src/data-retrieval-protocol.hpp:25,
                 from ../src/simple-data-retrieval.hpp:27,
                 from ../src/simple-data-retrieval.cpp:22:
../src/common.hpp:48:10: fatal error: ndn-cxx/common.hpp: No such file or directory
 #include <ndn-cxx/common.hpp>
          ^~~~~~~~~~~~~~~~~~~~
compilation terminated.

Waf: Leaving directory `/vagrant/Consumer-Producer-API/build'
Build failed
 -> task in 'consumerproducer' failed with exit status 1 (run with -v to display more information)

Problem in compiling Consumer-Producer-API

I have Pull ndn-cxx and Consumer-Producer-API from Github. I have built ndn-cxx successfully and install it. Next i have configure Consumer-Producer-API and try to build using the command "./waf" but faild due following error.
consumer_producer_api

Can any body help me how to remove this error. i have try to locat the "Exclude" in the API but did not find.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.