Task #2429

Implement partial nfdc equivalent using jNDN

Added by Alex Afanasyev almost 6 years ago. Updated almost 6 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:


The control app should send commands directly using Interest/Data exchange. Therefore, we need jNDN equivalent of some nfdc functionality

  • FaceUri canonization

  • Support to

    • register
    • unregister
    • create
    • destroy
    • unset-strategy

For details refer to

This either should be a helper Java class, or if jNDN already provides functions to do that, there should be documentation on how to use it.


diag.png (11.4 KB) diag.png Sanjev Mehrotra, 01/30/2015 12:53 PM
nfd-cd.png (101 KB) nfd-cd.png Sanjev Mehrotra, 02/03/2015 09:06 AM
nfd-cd2.png (115 KB) nfd-cd2.png Sanjev Mehrotra, 02/03/2015 11:23 PM
nfd.vpp (422 KB) nfd.vpp Sanjev Mehrotra, 02/10/2015 10:52 PM

Updated by Sanjev Mehrotra almost 6 years ago

Basic class design to be used by NDNManager in building the command to be executed . These classes will wrap the command and invoke inetest/data exechange using jndn classes via a wrapper.
I am thinking of using jNDN jar as a library in NDNMAnager.


Updated by Alex Afanasyev almost 6 years ago

You should use jNDN library.

However. I don't quite like the design. For the control, you should create a separate class that is similar to nfdc itself (NFD/tools/nfdc.hpp). Probably, the easiest would be to just duplicate the implemented design (we had a few iteration on that).

For the status I suggest similar, but not exactly the same thing. Status is basically retrieves a few datasets. You need to implement equivalent of SegmentFetcher (ndn-cxx/src/util/segment-fetcher.hpp) and necessary data structures. Then the Status class (do not combine unrelated things together) should provide interfaces to get status datasets (ForwarerStatus, List, List, List, ...). You should list of items that already exist in jNDN and ones that need to be implemented. Some things will go to jNDN library after implemented.


Updated by Sanjev Mehrotra almost 6 years ago

Find attached the class diagram for FaceIdFatcher,NFDC (made is final to reflect that these classes will be made final in java),SegmentFetcher,Controller.
These are all new classes will belong to NDNManager and some classes(FaceIdFatcher,NFDC) can be pushed to jNDN under a separate package (ndn-cxx)

The status class will the place holder for all the attributes to be shown in preference settings.(mainly the lookup values for FaceUrl, Target Url)

Question is what parts will be loaded as wrapper(for .so files) and what all code can be called via jNDN classes.
IS the jni framwwork going to invoke ndnxcc controller or this will all be done as pure java code in jNDN or a separate ndn-cxx moduel itself.

Please clearify.

I will continue to work on activity diagram to show the flow as I wait for inputs on above.


Updated by Sanjev Mehrotra almost 6 years ago

If found following classes to go in jndn for FaceUri , Address, TCPEndpoint ,UDPEndpoint, localStreamProtocol
Alex please is it safe to use TCPTransport and UDPTrancport classes from jNDND for TCPEndpoint and UDPEndpoint. If yes then only locaclStreamProtocol needs to be taken care of.


Updated by Andrew Brown almost 6 years ago

FYI, I am working on trying to open source the jndn-management library I sent to Sanjev. It's missing a few of the methods from above (the negative ones: unregister, destroy, unset-strategy) but if we add those it should fit what you're looking for. I should have a decision to open source by 17 February; if approved, I plan on hosting the code on GitHub under MIT. Thoughts?


Updated by Alex Afanasyev almost 6 years ago

  • Project changed from ndn-embedded to NFD-android
  • Category deleted (Android)

Updated by Sanjev Mehrotra almost 6 years ago

  • File nfd.vpp nfd.vpp added
  • Category set to gui
  • % Done changed from 0 to 20

Class diagram vpp file.


Updated by Alex Afanasyev almost 6 years ago

(Duplicate of gerrit comment)

I compiled the code in patchset 18, but I failed to do anything meaningful with it.

The provided interface is not what I would like to see. For faces and routes it should resemble wifi connection interface:

  • settings activity has groups similar to the one that exist now

  • Face group gives a list of currently configured faces with an option to remove any of them

  • At the end of face group there is an "Add" option which opens FaceAdd activity or a "popup" to enter FaceUri

If needed, face group can be implemented as a separate activity.

Similar for other controls. The most important now is registered prefixes (implies working Face create/destroy). Strategies is important, but second-order.


Updated by Sanjev Mehrotra almost 6 years ago

  • Status changed from New to Code review
  • % Done changed from 20 to 80

Updated by Alex Afanasyev almost 6 years ago

  • Status changed from Code review to Abandoned
  • % Done changed from 80 to 0

This task no longer relevant, as we rely on jndn-management library (


Updated by Alex Afanasyev almost 6 years ago

  • Target version set to 0.1

Also available in: Atom PDF