format systemd status as time deltas from now

This commit is contained in:
Jeff 2022-05-20 11:11:34 -04:00
parent 18e1272c76
commit 60ada470db
No known key found for this signature in database
GPG Key ID: 025C02EE3A092F2D
2 changed files with 32 additions and 2 deletions

View File

@ -870,10 +870,11 @@ namespace llarp
<< NumberOfConnectedRouters() << "/" << NumberOfConnectedClients() << " | "
<< pathContext().CurrentTransitPaths() << " active paths | "
<< "block " << (m_lokidRpcClient ? m_lokidRpcClient->BlockHeight() : 0) << " | gossip: "
<< "(next/last) " << _rcGossiper.NextGossipAt() << "/";
<< "(next/last) " << time_delta<std::chrono::seconds>{_rcGossiper.NextGossipAt()}
<< " / ";
if (auto maybe = _rcGossiper.LastGossipAt())
{
ss << *maybe;
ss << time_delta<std::chrono::seconds>{*maybe};
}
else
{

View File

@ -29,4 +29,33 @@ namespace llarp
std::ostream&
operator<<(std::ostream& out, const TimePoint_t& t);
template <typename Time_Duration>
struct time_delta
{
const TimePoint_t at;
std::ostream&
operator()(std::ostream& out) const
{
const auto dlt = std::chrono::duration_cast<Time_Duration>(TimePoint_t::clock::now() - at);
if (dlt > 0s)
return out << std::chrono::duration_cast<Duration_t>(dlt) << " ago ";
else if (dlt < 0s)
return out << "in " << std::chrono::duration_cast<Duration_t>(-dlt);
else
return out << "now";
}
};
inline std::ostream&
operator<<(std::ostream& out, const time_delta<std::chrono::seconds>& td)
{
return td(out);
}
inline std::ostream&
operator<<(std::ostream& out, const time_delta<std::chrono::milliseconds>& td)
{
return td(out);
}
} // namespace llarp