i6engine  1.0
Timer.h
Go to the documentation of this file.
1 /*
2 * i6engine
3 * Copyright (2016) Daniel Bonrath, Michael Baer, All rights reserved.
4 *
5 * This file is part of i6engine; i6engine is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19 
25 #ifndef __I6ENGINE_CORE_TIMER_H__
26 #define __I6ENGINE_CORE_TIMER_H__
27 
29 
30 #include <condition_variable>
31 #include <mutex>
32 
33 namespace i6e {
34 namespace core {
35 
36  class EngineCoreController;
37 
49  class Timer {
50  public:
55  Timer(EngineCoreController * ctrl, const uint32_t lngFrametime);
56 
60  ~Timer();
61 
66  inline void start() { _bolTimerStopped = false; }
67 
71  inline void pause() { _bolTimerStopped = true; }
72 
76  void update();
77 
81  bool setLastUpdate();
82 
83  private:
87  Timer() = delete;
88 
92  Timer(const Timer &) = delete;
93 
97  Timer & operator=(const Timer &) = delete;
98 
99  EngineCoreController * _ctrl;
100 
101  bool _bolTimerStopped;
102  std::condition_variable _condVariable;
103  std::mutex _lock;
104  uint64_t _timerID;
105  };
106 
107 } /* namespace core */
108 } /* namespace i6e */
109 
110 #endif /* __I6ENGINE_CORE_TIMER_H__ */
111 
void update()
This method executes the given update function ptrFun() and lets the thread wait at a conditional var...
bool setLastUpdate()
registered as job in Scheduler to be called when time is over
void pause()
Pause the timer so an update will do nothing.
Definition: Timer.h:71
this class is used as an abstraction layer
~Timer()
destructor removes timer
void start()
Start the timer so an update can be performed later. If the timer has not been started, the update method will do nothing.
Definition: Timer.h:66
This class provides gametime-synchronized Timers. They are controlled by the Scheduler.
Definition: Timer.h:49