mgmt: re-added expiration time to FaceStatus
refs #3381
Change-Id: I57d3166fc6ed52a54c442a80faffe7a7f4051e1d
diff --git a/daemon/face/face.hpp b/daemon/face/face.hpp
index d783dd0..2b56fec 100644
--- a/daemon/face/face.hpp
+++ b/daemon/face/face.hpp
@@ -159,6 +159,12 @@
*/
signal::Signal<Transport, FaceState/*old*/, FaceState/*new*/>& afterStateChange;
+ /** \return expiration time of the face
+ * \retval time::steady_clock::TimePoint::max() the face has an indefinite lifetime
+ */
+ time::steady_clock::TimePoint
+ getExpirationTime() const;
+
/** \brief request the face to be closed
*
* This operation is effective only if face is in UP or DOWN state,
@@ -266,6 +272,12 @@
return m_transport->getState();
}
+inline time::steady_clock::TimePoint
+Face::getExpirationTime() const
+{
+ return m_transport->getExpirationTime();
+}
+
inline void
Face::close()
{
diff --git a/daemon/face/transport.cpp b/daemon/face/transport.cpp
index 2d2c3dd..26cc0d7 100644
--- a/daemon/face/transport.cpp
+++ b/daemon/face/transport.cpp
@@ -64,6 +64,7 @@
, m_linkType(ndn::nfd::LINK_TYPE_NONE)
, m_mtu(MTU_INVALID)
, m_state(TransportState::UP)
+ , m_expirationTime(time::steady_clock::TimePoint::max())
{
}
diff --git a/daemon/face/transport.hpp b/daemon/face/transport.hpp
index 56ff730..a12ce7c 100644
--- a/daemon/face/transport.hpp
+++ b/daemon/face/transport.hpp
@@ -253,6 +253,12 @@
*/
signal::Signal<Transport, TransportState/*old*/, TransportState/*new*/> afterStateChange;
+ /** \return expiration time of the transport
+ * \retval time::steady_clock::TimePoint::max() the transport has indefinite lifetime
+ */
+ time::steady_clock::TimePoint
+ getExpirationTime() const;
+
protected: // properties to be set by subclass
void
setLocalUri(const FaceUri& uri);
@@ -279,6 +285,9 @@
void
setState(TransportState newState);
+ void
+ setExpirationTime(const time::steady_clock::TimePoint& expirationTime);
+
protected: // to be overridden by subclass
/** \brief invoked before persistency is changed
* \throw std::invalid_argument new persistency is not supported
@@ -316,6 +325,7 @@
ndn::nfd::LinkType m_linkType;
ssize_t m_mtu;
TransportState m_state;
+ time::steady_clock::TimePoint m_expirationTime;
};
inline const Face*
@@ -415,6 +425,18 @@
return m_state;
}
+inline time::steady_clock::TimePoint
+Transport::getExpirationTime() const
+{
+ return m_expirationTime;
+}
+
+inline void
+Transport::setExpirationTime(const time::steady_clock::TimePoint& expirationTime)
+{
+ m_expirationTime = expirationTime;
+}
+
std::ostream&
operator<<(std::ostream& os, const FaceLogHelper<Transport>& flh);
diff --git a/daemon/face/unicast-udp-transport.cpp b/daemon/face/unicast-udp-transport.cpp
index 3bd4759..b6ad19a 100644
--- a/daemon/face/unicast-udp-transport.cpp
+++ b/daemon/face/unicast-udp-transport.cpp
@@ -89,6 +89,7 @@
}
else {
m_closeIfIdleEvent.cancel();
+ setExpirationTime(time::steady_clock::TimePoint::max());
}
}
@@ -105,6 +106,7 @@
scheduleClosureWhenIdle();
}
});
+ setExpirationTime(time::steady_clock::now() + m_idleTimeout);
}
} // namespace face