// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary // source code may only be used and distributed under the Widevine License // Agreement. // // Timer - Platform independent interface for a Timer class // #ifndef CDM_BASE_TIMER_H_ #define CDM_BASE_TIMER_H_ #include #include "utils/StrongPointer.h" #include "disallow_copy_and_assign.h" namespace wvcdm { // Timer Handler class. // // Derive from this class if you wish to receive events when the timer // expires. Provide the handler when setting up a new Timer. class TimerHandler { public: TimerHandler() {} virtual ~TimerHandler() {} virtual void OnTimerEvent() = 0; }; // Timer class. The implementation is platform dependent. // // This class provides a simple recurring timer API. The class receiving // timer expiry events should derive from TimerHandler. // Specify the receiver class and the periodicty of timer events when // the timer is initiated by calling Start. class Timer { public: class Impl; Timer(); ~Timer(); bool Start(TimerHandler* handler, uint32_t time_in_secs); // Enable |wait_for_exit| only if the method is being invoked from a thread // other than the timer thread. Deadlock might occur if enabled and called // from the timer thread. void Stop(bool wait_for_exit); bool IsRunning(); private: android::sp impl_; CORE_DISALLOW_COPY_AND_ASSIGN(Timer); }; } // namespace wvcdm #endif // CDM_BASE_TIMER_H_