#ifndef LLARP_STOPWATCH_HPP #define LLARP_STOPWATCH_HPP #include #include namespace llarp { namespace util { class Stopwatch { absl::optional< absl::Time > m_start; absl::optional< absl::Time > m_stop; public: Stopwatch() { } void start() { assert(!m_start); assert(!m_stop); m_start.emplace(absl::Now()); } void stop() { assert(m_start); assert(!m_stop); m_stop.emplace(absl::Now()); } bool done() const { return m_start && m_stop; } absl::Duration time() const { assert(m_start); assert(m_stop); return m_stop.value() - m_start.value(); } }; } // namespace util } // namespace llarp #endif