Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
TimerMng.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* TimerMng.h (C) 2000-2022 */
9/* */
10/* Implementation of a timer manager. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMPL_TIMERMNG_H
13#define ARCANE_IMPL_TIMERMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/core/ITimerMng.h"
19
20#include <atomic>
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
37class ARCANE_IMPL_EXPORT TimerMng
38: public TraceAccessor
39, public ITimerMng
40{
41 public:
42
44 explicit TimerMng(ITraceMng* msg);
45
46 public:
47
48 void beginTimer(Timer* timer) override;
49 Real endTimer(Timer* timer) override;
50 Real getTime(Timer* timer) override;
51 bool hasTimer(Timer* timer) override;
52
53 protected:
54
56 virtual Real _getRealTime();
57
59 virtual void _setRealTime() {}
60
61 private:
62
63 void _errorInTimer(const String& msg, int retcode);
64};
65
66/*---------------------------------------------------------------------------*/
67/*---------------------------------------------------------------------------*/
68
69} // End namespace Arcane
70
71/*---------------------------------------------------------------------------*/
72/*---------------------------------------------------------------------------*/
73
74#endif
Interface of a timer manager.
Definition ITimerMng.h:50
bool hasTimer(Timer *timer) override
Indicates if the timer timer is registered.
Definition TimerMng.cc:83
TimerMng(ITraceMng *msg)
Constructs a timer linked to the manager mng.
Definition TimerMng.cc:39
virtual Real _getRealTime()
Returns the real time.
Definition TimerMng.cc:92
virtual void _setRealTime()
Sets the real time.
Definition TimerMng.h:59
Real getTime(Timer *timer) override
Time elapsed since the last call to beginTimer().
Definition TimerMng.cc:61
void beginTimer(Timer *timer) override
Attaches the timer timer to this manager.
Definition TimerMng.cc:51
Real endTimer(Timer *timer) override
Releases the timer timer.
Definition TimerMng.cc:72
Management of a timer.
Definition Timer.h:63
TraceAccessor(ITraceMng *m)
Constructs an accessor via the trace manager m.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
double Real
Type representing a real number.