#pragma once #include #include #include #include "datapoint/analytics_event.hpp" namespace djm::device { class AnalyticsSource { public: virtual ~AnalyticsSource() noexcept = default; /** * Yields an analytics event if any is available, otherwise blocks until * `timeout` expires and returns Nothing. Multiple analytics event may queue * in the background. */ virtual std::optional await( std::chrono::milliseconds timeout) = 0; }; } // namespace djm::device