29 #include <ndn-cxx/util/logger.hpp> 45 FaceQueryFilter filter;
46 filter.setRemoteUri(faceUri.toString());
47 return this->
execute(filter, allowMulti);
53 FaceQueryFilter filter;
54 filter.setFaceId(faceId);
61 const uint64_t* faceId = ndn::any_cast<uint64_t>(&faceIdOrUri);
62 if (faceId !=
nullptr) {
66 return this->
execute(ndn::any_cast<FaceUri>(faceIdOrUri), allowMulti);
77 if (m_filter.hasRemoteUri()) {
78 auto remoteUri = this->canonize(
"remote", FaceUri(m_filter.getRemoteUri()));
83 m_filter.setRemoteUri(remoteUri->toString());
86 if (m_filter.hasLocalUri()) {
87 auto localUri = this->canonize(
"local", FaceUri(m_filter.getLocalUri()));
92 m_filter.setLocalUri(localUri->toString());
97 if (m_results.size() == 0) {
99 m_errorReason =
"Face not found";
101 else if (m_results.size() > 1 && !allowMulti) {
103 m_errorReason =
"Multiple faces match the query";
110 FindFace::canonize(
const std::string& fieldName,
const FaceUri& input)
112 if (!FaceUri::canCanonize(input.getScheme())) {
113 NDN_LOG_DEBUG(
"Using " << fieldName <<
'=' << input <<
" without canonization");
117 optional<FaceUri> result;
119 [&result] (
const FaceUri& canonicalUri) { result = canonicalUri; },
120 [
this, fieldName] (
const std::string& errorReason) {
121 m_errorReason =
"Error during " + fieldName +
" FaceUri canonization: " + errorReason;
124 m_ctx.
face.processEvents();
132 auto datasetCb = [
this] (
const std::vector<ndn::nfd::FaceStatus>& result) {
136 auto failureCb = [
this] (uint32_t code,
const std::string& reason) {
138 m_errorReason =
"Error " + to_string(code) +
" when querying face: " + reason;
141 if (m_filter.empty()) {
142 m_ctx.
controller.fetch<ndn::nfd::FaceDataset>(
146 m_ctx.
controller.fetch<ndn::nfd::FaceQueryDataset>(
149 m_ctx.
face.processEvents();
155 std::set<uint64_t> faceIds;
156 for (
const FaceStatus& faceStatus : m_results) {
157 faceIds.insert(faceStatus.getFaceId());
165 BOOST_ASSERT(m_results.size() == 1);
166 return m_results.front();
173 for (
const auto& item : m_results) {
177 os << item.getFaceId() <<
" (local=" << item.getLocalUri() <<
')';
ndn::nfd::CommandOptions makeCommandOptions() const
context for command execution
time::nanoseconds getTimeout() const
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
print different string on first and subsequent usage