Add signal handling, improve robustness for sequence number file writes.
Also removes now unused Fib::Clean method.
Change-Id: I7db2d66fa329920467ea7d5e7c16ff5a2ee9f44b
diff --git a/src/nlsr.cpp b/src/nlsr.cpp
index 144f1d3..4d52fa0 100644
--- a/src/nlsr.cpp
+++ b/src/nlsr.cpp
@@ -78,6 +78,7 @@
m_lsdb)
, m_statsCollector(m_lsdb, m_helloProtocol)
, m_faceMonitor(m_face)
+ , m_terminateSignals(face.getIoContext(), SIGINT, SIGTERM)
{
NLSR_LOG_DEBUG("Initializing Nlsr");
@@ -107,6 +108,10 @@
neighbor.setLinkCost(0);
}
}
+
+ m_terminateSignals.async_wait([this] (auto&&... args) {
+ terminate(std::forward<decltype(args)>(args)...);
+ });
}
void
@@ -365,4 +370,13 @@
});
}
+void
+Nlsr::terminate(const boost::system::error_code& error, int signalNo)
+{
+ if (error)
+ return;
+ NLSR_LOG_INFO("Caught signal " << signalNo << " (" << ::strsignal(signalNo) << "), exiting...");
+ m_face.getIoContext().stop();
+}
+
} // namespace nlsr