Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*!
* \file base_time.hh
* \brief Header file for the control port base_time functionality.
* \author ETSI STF525
* \copyright ETSI Copyright Notification
* No part may be reproduced except as authorized by written permission.
* The copyright and the foregoing restriction extend to reproduction in all media.
* All rights reserved.
* \version 0.1
*/
#pragma once
#include <chrono>
/**
* \class base_time
* \brief This class provides time tools such as getting current time
*/
class base_time {
const unsigned long long its_base_time = 1072911600000L - 3600L; //! Base time 01/01/2004 in millseconds
static base_time* _instance;
private:
base_time() { }; //! Can not be created manually
public:
static inline base_time& get_instance();
virtual ~base_time() { if (_instance != nullptr) delete _instance; };
public:
inline const unsigned long long get_current_time() const;
inline const unsigned long long get_its_base_time() const;
inline const unsigned long long get_its_current_time() const;
}; // End of class base_time
// static functions
base_time& base_time::get_instance() {
return (_instance != nullptr) ? *_instance : *(_instance = new base_time());
}
const unsigned long long base_time::get_current_time() const {
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
}
const unsigned long long base_time::get_its_base_time() const {
return base_time::its_base_time;
}
const unsigned long long base_time::get_its_current_time() const {
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count() - base_time::its_base_time;
}