diff --git a/core/common.hpp b/core/common.hpp index 614dd4e..06e4fe1 100644 --- a/core/common.hpp +++ b/core/common.hpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include diff --git a/tests/chunks/discover-version.t.cpp b/tests/chunks/discover-version.t.cpp index 7d18886..a07ecce 100644 --- a/tests/chunks/discover-version.t.cpp +++ b/tests/chunks/discover-version.t.cpp @@ -63,8 +63,8 @@ protected: util::DummyClientFace face{m_io}; Options opt; unique_ptr discover; - optional discoveredName; - optional discoveredVersion; + std::optional discoveredName; + std::optional discoveredVersion; bool isDiscoveryFinished = false; }; diff --git a/tests/peek/ndnpeek.t.cpp b/tests/peek/ndnpeek.t.cpp index 30c305a..c3979fd 100644 --- a/tests/peek/ndnpeek.t.cpp +++ b/tests/peek/ndnpeek.t.cpp @@ -86,7 +86,7 @@ public: checkOutput(output_test_stream& output, const Data& data) { const Block& block = data.wireEncode(); - std::string expected(reinterpret_cast(block.wire()), block.size()); + std::string expected(reinterpret_cast(block.data()), block.size()); BOOST_CHECK(output.is_equal(expected)); } @@ -94,7 +94,7 @@ public: checkOutput(output_test_stream& output, const lp::Nack& nack) { const Block& block = nack.getHeader().wireEncode(); - std::string expected(reinterpret_cast(block.wire()), block.size()); + std::string expected(reinterpret_cast(block.data()), block.size()); BOOST_CHECK(output.is_equal(expected)); } }; @@ -252,7 +252,7 @@ BOOST_AUTO_TEST_CASE(NoTimeout) { auto options = makeDefaultOptions(); options.interestLifetime = 1_s; - options.timeout = nullopt; + options.timeout = std::nullopt; initialize(options); BOOST_CHECK_EQUAL(face.sentInterests.size(), 0); diff --git a/tools/dissect/dissector.cpp b/tools/dissect/dissector.cpp index c612352..4a64f18 100644 --- a/tools/dissect/dissector.cpp +++ b/tools/dissect/dissector.cpp @@ -27,7 +27,7 @@ #include #include -#include +#include namespace ndn::dissect { @@ -168,7 +168,7 @@ Dissector::printBlock(const Block& block) const auto& elements = block.elements(); if (elements.empty()) { m_out << " [["; - name::Component(block.value(), block.value_size()).toUri(m_out); + escape(m_out, reinterpret_cast(block.value()), block.value_size()); m_out << "]]"; } m_out << "\n"; diff --git a/tools/dump/ndndump.hpp b/tools/dump/ndndump.hpp index 9d786e7..83b0710 100644 --- a/tools/dump/ndndump.hpp +++ b/tools/dump/ndndump.hpp @@ -105,7 +105,7 @@ public: // options std::string interface; std::string inputFile; std::string pcapFilter{getDefaultPcapFilter()}; - optional nameFilter; + std::optional nameFilter; bool wantPromisc = true; bool wantTimestamp = true; bool wantVerbose = false; diff --git a/tools/peek/ndnpeek/ndnpeek.cpp b/tools/peek/ndnpeek/ndnpeek.cpp index d58b92e..3fb540f 100644 --- a/tools/peek/ndnpeek/ndnpeek.cpp +++ b/tools/peek/ndnpeek/ndnpeek.cpp @@ -64,7 +64,9 @@ NdnPeek::createInterest() const interest.setMustBeFresh(m_options.mustBeFresh); interest.setForwardingHint(m_options.forwardingHint); interest.setInterestLifetime(m_options.interestLifetime); - interest.setHopLimit(m_options.hopLimit); + if (m_options.hopLimit) { + interest.setHopLimit(*m_options.hopLimit); + } if (m_options.applicationParameters) { interest.setApplicationParameters(m_options.applicationParameters); } @@ -76,6 +78,12 @@ NdnPeek::createInterest() const return interest; } +static void +writeToCout(span bytes) +{ + std::cout.write(reinterpret_cast(bytes.data()), bytes.size()); +} + void NdnPeek::onData(const Data& data) { @@ -89,12 +97,10 @@ NdnPeek::onData(const Data& data) } if (m_options.wantPayloadOnly) { - const Block& block = data.getContent(); - std::cout.write(reinterpret_cast(block.value()), block.value_size()); + writeToCout(data.getContent().value_bytes()); } else { - const Block& block = data.wireEncode(); - std::cout.write(reinterpret_cast(block.wire()), block.size()); + writeToCout(data.wireEncode()); } } @@ -104,7 +110,7 @@ NdnPeek::onNack(const lp::Nack& nack) m_result = Result::NACK; m_timeoutEvent.cancel(); - lp::NackHeader header = nack.getHeader(); + const auto& header = nack.getHeader(); if (m_options.isVerbose) { std::cerr << "NACK: " << header.getReason() << "\nRTT: " << time::duration_cast(time::steady_clock::now() - m_sendTime).count() @@ -115,8 +121,7 @@ NdnPeek::onNack(const lp::Nack& nack) std::cout << header.getReason() << std::endl; } else { - const Block& block = header.wireEncode(); - std::cout.write(reinterpret_cast(block.wire()), block.size()); + writeToCout(header.wireEncode()); } } diff --git a/tools/peek/ndnpeek/ndnpeek.hpp b/tools/peek/ndnpeek/ndnpeek.hpp index eba1b1f..f7f246b 100644 --- a/tools/peek/ndnpeek/ndnpeek.hpp +++ b/tools/peek/ndnpeek/ndnpeek.hpp @@ -48,13 +48,13 @@ struct PeekOptions bool mustBeFresh = false; std::vector forwardingHint; time::milliseconds interestLifetime = DEFAULT_INTEREST_LIFETIME; - optional hopLimit; + std::optional hopLimit; shared_ptr applicationParameters; // program behavior options bool isVerbose = false; bool wantPayloadOnly = false; - optional timeout; + std::optional timeout; }; class NdnPeek : noncopyable diff --git a/tools/peek/ndnpoke/ndnpoke.hpp b/tools/peek/ndnpoke/ndnpoke.hpp index 16a3795..a3cd393 100644 --- a/tools/peek/ndnpoke/ndnpoke.hpp +++ b/tools/peek/ndnpoke/ndnpoke.hpp @@ -49,7 +49,7 @@ struct PokeOptions // program behavior options bool isVerbose = false; bool wantUnsolicited = false; - optional timeout; + std::optional timeout; }; class NdnPoke : noncopyable diff --git a/wscript b/wscript index 92b710c..0bfb7f6 100644 --- a/wscript +++ b/wscript @@ -27,8 +27,9 @@ def configure(conf): conf.env.WITH_TESTS = conf.options.with_tests - conf.check_cfg(package='libndn-cxx', args=['--cflags', '--libs'], uselib_store='NDN_CXX', - pkg_config_path=os.environ.get('PKG_CONFIG_PATH', '%s/pkgconfig' % conf.env.LIBDIR)) + pkg_config_path = os.environ.get('PKG_CONFIG_PATH', f'{conf.env.LIBDIR}/pkgconfig') + conf.check_cfg(package='libndn-cxx', args=['libndn-cxx >= 0.8.0', '--cflags', '--libs'], + uselib_store='NDN_CXX', pkg_config_path=pkg_config_path) boost_libs = ['system', 'program_options', 'filesystem'] if conf.env.WITH_TESTS: