peek: add --app-params and --app-params-file options
Change-Id: Ic1afb118d2e1a58d99d046e072a9df439e0020b3
diff --git a/tools/peek/ndnpeek/main.cpp b/tools/peek/ndnpeek/main.cpp
index 989887a..89b2222 100644
--- a/tools/peek/ndnpeek/main.cpp
+++ b/tools/peek/ndnpeek/main.cpp
@@ -24,6 +24,7 @@
*
* @author Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
* @author Zhuo Li <zhuoli@email.arizona.edu>
+ * @author Davide Pesavento <davidepesa@gmail.com>
*/
#include "ndnpeek.hpp"
@@ -83,6 +84,8 @@
("link-file", po::value<std::string>(), "set ForwardingHint from a raw binary file")
("lifetime,l", po::value<time::milliseconds::rep>()->default_value(options.interestLifetime.count()),
"set InterestLifetime, in milliseconds")
+ ("app-params,A", po::value<std::string>(), "set ApplicationParameters from a base64-encoded string")
+ ("app-params-file", po::value<std::string>(), "set ApplicationParameters from a file")
;
po::options_description visibleOptDesc;
@@ -159,6 +162,37 @@
return 2;
}
+ if (vm.count("app-params") > 0) {
+ if (vm.count("app-params-file") > 0) {
+ std::cerr << "ERROR: cannot specify both '--app-params' and '--app-params-file'" << std::endl;
+ return 2;
+ }
+ std::istringstream is(vm["app-params"].as<std::string>());
+ try {
+ options.applicationParameters = io::loadBuffer(is, io::BASE64);
+ }
+ catch (const io::Error& e) {
+ std::cerr << "ERROR: invalid ApplicationParameters string: " << e.what() << std::endl;
+ return 2;
+ }
+ }
+
+ if (vm.count("app-params-file") > 0) {
+ auto filename = vm["app-params-file"].as<std::string>();
+ std::ifstream paramsFile = openBinaryFile(filename);
+ if (!paramsFile) {
+ return 2;
+ }
+ try {
+ options.applicationParameters = io::loadBuffer(paramsFile, io::NO_ENCODING);
+ }
+ catch (const io::Error& e) {
+ std::cerr << "ERROR: cannot read ApplicationParameters from file '" << filename
+ << "': " << e.what() << std::endl;
+ return 2;
+ }
+ }
+
try {
Face face;
NdnPeek program(face, options);
diff --git a/tools/peek/ndnpeek/ndnpeek.cpp b/tools/peek/ndnpeek/ndnpeek.cpp
index ff7f7a0..7bcb137 100644
--- a/tools/peek/ndnpeek/ndnpeek.cpp
+++ b/tools/peek/ndnpeek/ndnpeek.cpp
@@ -24,6 +24,7 @@
*
* @author Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
* @author Zhuo Li <zhuoli@email.arizona.edu>
+ * @author Davide Pesavento <davidepesa@gmail.com>
*/
#include "ndnpeek.hpp"
@@ -66,6 +67,9 @@
if (m_options.link) {
interest.setForwardingHint(m_options.link->getDelegationList());
}
+ if (m_options.applicationParameters) {
+ interest.setApplicationParameters(m_options.applicationParameters);
+ }
if (m_options.isVerbose) {
std::cerr << "INTEREST: " << interest << std::endl;
diff --git a/tools/peek/ndnpeek/ndnpeek.hpp b/tools/peek/ndnpeek/ndnpeek.hpp
index d02155f..357597e 100644
--- a/tools/peek/ndnpeek/ndnpeek.hpp
+++ b/tools/peek/ndnpeek/ndnpeek.hpp
@@ -24,6 +24,7 @@
*
* @author Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
* @author Zhuo Li <zhuoli@email.arizona.edu>
+ * @author Davide Pesavento <davidepesa@gmail.com>
*/
#ifndef NDN_TOOLS_NDNPEEK_NDNPEEK_HPP
@@ -48,6 +49,7 @@
bool mustBeFresh = false;
shared_ptr<Link> link;
time::milliseconds interestLifetime = DEFAULT_INTEREST_LIFETIME;
+ shared_ptr<Buffer> applicationParameters;
// program behavior options
bool isVerbose = false;
@@ -107,7 +109,7 @@
onTimeout();
private:
- const PeekOptions& m_options;
+ const PeekOptions m_options;
Face& m_face;
Scheduler m_scheduler;
time::steady_clock::TimePoint m_sendTime;