RDK Documentation (Open Sourced RDK Components)
timer.h
1 /*
2  * If not stated otherwise in this file or this component's Licenses.txt file the
3  * following copyright and licenses apply:
4  *
5  * Copyright 2018 RDK Management
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18 */
19 #ifndef _PLAYER_TIMER_H_
20 #define _PLAYER_TIMER_H_
21 
22 class TimerBaseImpl;
23 
24 class TimerBase {
25 public:
26  TimerBase();
27  virtual ~TimerBase();
28 
29  void startOneShot(double interval);
30  void stop();
31  bool isActive() const;
32 
33 protected:
34  virtual void fired() = 0;
35 
36 private:
37  TimerBaseImpl *m_impl;
38  friend class TimerBaseImpl;
39 };
40 
41 template <typename TimerFiredClass>
42 class Timer : public TimerBase {
43 public:
44  typedef void (TimerFiredClass::*TimerFiredFunction)();
45 
46  Timer(TimerFiredClass* o, TimerFiredFunction f)
47  : m_object(o), m_function(f) { }
48 
49 private:
50  virtual void fired() { (m_object->*m_function)(); }
51 
52  TimerFiredClass* m_object;
53  TimerFiredFunction m_function;
54 };
55 
56 #endif // _PLAYER_TIMER_H_
TimerBase
Definition: timer.h:24
TimerBaseImpl
Definition: timer.cpp:22
Timer
Definition: timer.h:42