mgmt: redesign ControlCommand and its usage in nfd::Controller

Split parameter encoding and validation into a separate class so that
different commands can have different formats in the future. Moreover,
request parameters and response parameters may be of different types.

Lastly, change the hierarchy to CRTP and make everything static. All the
encoding and validation details are the same for every request/response
of a given command type, so it makes no sense to allocate a separate
ControlCommand instance for each individual request.

Change-Id: I56c16dc3e275aaa48608478aad002d448c0492cc
9 files changed
tree: 08ccfc18dcb4c18d4244f31cfa823a4965a5821a
  1. .github/
  2. .jenkins.d/
  3. .waf-tools/
  4. docs/
  5. examples/
  6. ndn-cxx/
  7. tests/
  8. tools/
  9. .dockerignore
  10. .editorconfig
  11. .gitignore
  12. .jenkins
  13. .mailmap
  14. AUTHORS.md
  15. client.conf.sample
  16. COPYING.lesser
  17. COPYING.md
  18. Dockerfile
  19. libndn-cxx.pc.in
  20. README-dev.md
  21. README.md
  22. waf
  23. wscript
README.md

ndn-cxx: NDN C++ library with eXperimental eXtensions

Latest version Language CI Docker Docs

ndn-cxx is a C++17 library implementing Named Data Networking (NDN) primitives that can be used to write various NDN applications. The library is currently being used by the following projects:

Documentation

See docs/INSTALL.rst for compilation and installation instructions.

Extensive documentation is available on the library's homepage.

Reporting bugs

Please submit any bug reports or feature requests to the ndn-cxx issue tracker.

Contributing

Contributions to ndn-cxx are greatly appreciated and can be made through our Gerrit code review site. If you are new to the NDN software community, please read our Contributor's Guide and README-dev.md to get started.

License

ndn-cxx is free software distributed under the GNU Lesser General Public License version 3. See COPYING.md and COPYING.lesser for details.

ndn-cxx contains third-party software, licensed under the following licenses: