diff --git a/daemon/face/udp-face.cpp b/daemon/face/udp-face.cpp index d4fe8cfb..843d48f3 100644 --- a/daemon/face/udp-face.cpp +++ b/daemon/face/udp-face.cpp @@ -103,8 +103,10 @@ UdpFace::getFaceStatus() const { ndn::nfd::FaceStatus status = Face::getFaceStatus(); if (isOnDemand()) { - time::milliseconds left = time::duration_cast( + time::milliseconds left = m_idleTimeout - time::duration_cast( time::steady_clock::now() - m_lastIdleCheck); + if (left < time::milliseconds::zero()) + left = time::milliseconds::zero(); if (hasBeenUsedRecently()) { status.setExpirationPeriod(left + m_idleTimeout); diff --git a/docs/_static/nfd-status.xsd b/docs/_static/nfd-status.xsd index 8f9f7cf4..829ba7c8 100644 --- a/docs/_static/nfd-status.xsd +++ b/docs/_static/nfd-status.xsd @@ -57,6 +57,7 @@ elementFormDefault="qualified"> + diff --git a/tools/nfd-status.cpp b/tools/nfd-status.cpp index 5d351082..d06e8fb0 100644 --- a/tools/nfd-status.cpp +++ b/tools/nfd-status.cpp @@ -369,6 +369,14 @@ public: std::string localUri(faceStatus.getLocalUri()); escapeSpecialCharacters(&localUri); std::cout << "" << localUri << ""; + + if (faceStatus.hasExpirationPeriod()) { + std::cout << "PT" + << time::duration_cast(faceStatus.getExpirationPeriod()) + .count() << "S" + << ""; + } + std::cout << ""; std::cout << ""; std::cout << "" << faceStatus.getNInInterests() @@ -419,8 +427,13 @@ public: std::cout << " faceid=" << faceStatus.getFaceId() << " remote=" << faceStatus.getRemoteUri() - << " local=" << faceStatus.getLocalUri() - << " counters={" + << " local=" << faceStatus.getLocalUri(); + if (faceStatus.hasExpirationPeriod()) { + std::cout << " expires=" + << time::duration_cast(faceStatus.getExpirationPeriod()) + .count() << "s"; + } + std::cout << " counters={" << "in={" << faceStatus.getNInInterests() << "i " << faceStatus.getNInDatas() << "d}" << " out={" << faceStatus.getNOutInterests() << "i "