Mercurial > code
annotate modules/net/examples/elapsed-timer.cpp @ 512:0002b8da93dc
Net: rework a lot, going to stabilization soon
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 04 Apr 2016 17:34:01 +0200 |
parents | |
children |
rev | line source |
---|---|
512
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * elapsed-timer.cpp -- measure elapsed time |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013-2015 David Demelier <markand@malikania.fr> |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include "elapsed-timer.h" |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 using std::chrono::duration_cast; |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 using std::chrono::high_resolution_clock; |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 using std::chrono::milliseconds; |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 ElapsedTimer::ElapsedTimer() noexcept |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 { |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 m_last = high_resolution_clock::now(); |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 } |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 void ElapsedTimer::pause() noexcept |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 { |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 /* |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 * When we put the timer on pause, do not forget to set the already |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 * elapsed time. |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 */ |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 (void)elapsed(); |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 m_paused = true; |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 } |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 void ElapsedTimer::restart() noexcept |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 { |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 m_paused = false; |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 m_last = high_resolution_clock::now(); |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 } |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 void ElapsedTimer::reset() noexcept |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 { |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 m_elapsed = 0; |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 m_last = high_resolution_clock::now(); |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 } |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 unsigned ElapsedTimer::elapsed() noexcept |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 { |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 if (!m_paused) { |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 m_elapsed += duration_cast<milliseconds>(high_resolution_clock::now() - m_last).count(); |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 m_last = high_resolution_clock::now(); |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 } |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 return m_elapsed; |
0002b8da93dc
Net: rework a lot, going to stabilization soon
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 } |