OLD | NEW |
| (Empty) |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CHROME_BROWSER_SYNC_NOTIFIER_BASE_TIME_H_ | |
6 #define CHROME_BROWSER_SYNC_NOTIFIER_BASE_TIME_H_ | |
7 | |
8 #include <time.h> | |
9 | |
10 #include "talk/base/basictypes.h" | |
11 | |
12 typedef uint64 time64; | |
13 | |
14 #define kMicrosecsTo100ns (static_cast<time64>(10)) | |
15 #define kMillisecsTo100ns (static_cast<time64>(10000)) | |
16 #define kSecsTo100ns (1000 * kMillisecsTo100ns) | |
17 #define kMinsTo100ns (60 * kSecsTo100ns) | |
18 #define kHoursTo100ns (60 * kMinsTo100ns) | |
19 #define kDaysTo100ns (24 * kHoursTo100ns) | |
20 const time64 kMaxTime100ns = UINT64_C(9223372036854775807); | |
21 | |
22 // Time difference in 100NS granularity between platform-dependent starting | |
23 // time and Jan 1, 1970. | |
24 #if defined(OS_WIN) | |
25 // On Windows time64 is seconds since Jan 1, 1601. | |
26 #define kStart100NsTimeToEpoch (116444736000000000uI64) | |
27 #else | |
28 // On Unix time64 is seconds since Jan 1, 1970. | |
29 #define kStart100NsTimeToEpoch (0) | |
30 #endif | |
31 | |
32 // Time difference in 100NS granularity between platform-dependent starting | |
33 // time and Jan 1, 1980. | |
34 #define kStart100NsTimeTo1980 \ | |
35 kStart100NsTimeToEpoch + UINT64_C(3155328000000000) | |
36 | |
37 #define kTimeGranularity (kDaysTo100ns) | |
38 | |
39 namespace notifier { | |
40 | |
41 // Get the current time represented in 100NS granularity. Different platform | |
42 // might return the value since different starting time. Win32 platform returns | |
43 // the value since Jan 1, 1601. | |
44 time64 GetCurrent100NSTime(); | |
45 | |
46 // Convert from struct tm to time64. | |
47 time64 TmToTime64(const struct tm& tm); | |
48 | |
49 // Convert from time64 to struct tm. | |
50 bool Time64ToTm(time64 t, struct tm* tm); | |
51 | |
52 // Returns the local time as a string suitable for logging. | |
53 // Note: This is *not* threadsafe, so only call it from the main thread. | |
54 char* GetLocalTimeAsString(); | |
55 | |
56 } // namespace notifier | |
57 | |
58 #endif // CHROME_BROWSER_SYNC_NOTIFIER_BASE_TIME_H_ | |
OLD | NEW |