Menu

Home

Elwyn Davies

NetInf Framework

This is the NetInf framework developed as part of the SAIL
project. (http://sail-project.eu)
NetInf is an abbreviation for 'Network of Information'.

Specification(s)

Note: versions may change:

NOTE: As of the middle of October 2012 we are updating the library to correspond to Version-10 of draft-farrell-decade-ni. The specification of the NetInf protocol has now been published as an Internet Draft and the code is being updated to match the draft. The C, Ruby, Clojure, Python and PHP parts of the repository are currently undergoing active development. Not all parts of the library will necessarily interwork at any given moment. Check the individual README files for information.

Contact

stephen.farrell@cs.tcd.ie, dirk.kutscher@neclab.eu
Copyright (C) 2012 Trinity College Dublin and Dirk Kutscher

License

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  <http://www.apache.org/licenses/LICENSE-2.0>

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Authors

Roadmap

There are c, ruby, python, java, php, and clojure subdirectories, each
with code handling ni names and implementing the NetInf protocol. In
addition, there is a patch to wget for handling NI names and some
shell script to work with NI-named objects on a web server.

The different implementations provide the following features:

  • c: NI URI format, HTTP convergence layer

  • curl: patch for curl ro handle NI names

  • ruby: NI URI format, HTTP and UDP convergence layers, standalone NetInf router

  • python: NI URI format, HTTP convergence layer, standalone NetInf server

  • java: NI URI format, HTTP convergence layer, NI proxy with local
    cache, GET/REGISTER/PUBLISH clients. Both client and proxy are Eclipse (http://www.eclipse.org/) projects and external JARs are not included; for more information, see README under lib/ directory.

  • php: HTTP convergence layer

  • clojure: NI URI format

  • wget: patch for wget to handle NI names

  • sh: scripts to generate NI names for a web server environment

Documentation

The specification of the NI URI format is here:
* http://tools.ietf.org/html/farrell-decade-ni-07
* http://tools.ietf.org/html/draft-hallambaker-decade-ni-params-02

The NetInf protocol specification (the basis of the HTTP and UDP
convergence layer implementations provided by some of the tools in
this package) is available in the doc directory.

Building

An overall Makefile is provided in the top level to invoke the Makefiles in
subsidiary directories, especially for C, and generate documentation.The default target only compiles the code. use 'make doxy' to crate the C and Python documentation.

Documentation

Doxygen documentation can be generated for the C and Python code
(the Makefile does it) but requires the help of the doxypy.py
module as a filter for the Python modules. (Doxygen support
for Ruby is not available in the main Doxygen code although there
is work in progress - see https://github.com/fourmond/doxygen-ruby-patch).

The doxypy.py module can be obtained from http://code.foosel.org/doxypy or the repository at http://github.com/0xCAFEBABE/doxypy.

If you don't want to install doxypy then edit the Doxygen configuration file
(netinf_code/doc/nilib_apis) setting FILTER_SOURCE_FILES = NO so the doxypy.py filter
is not used. For Debian associated distributions, doxypy is available as a package. The package provides a script 'doxypy' that can be used as the Doxygen filter. If downloaded directly from the authoor's site the raw 'doxypy.py' Python script is installed. You may need to tweak the INPUT_FILTER entry in the Doxygen configuration file (netinf_code/doc/nilib_apis) appropriately.

The Ruby source code documentation can be generated by 'make -C ruby doc'.


Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.