]> git.ipfire.org Git - thirdparty/squid.git/blame - src/SquidTime.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / SquidTime.h
CommitLineData
985c86bc 1/*
bde978a6 2 * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
985c86bc 3 *
bbc27441
AJ
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
985c86bc 7 */
bbc27441
AJ
8
9/* DEBUG: section 21 Time Functions */
10
985c86bc 11#ifndef SQUID_TIME_H
12#define SQUID_TIME_H
13
25f98340 14#include "rfc1123.h"
9fb4efad 15
074d6a40 16#include <ctime>
ef364f64 17/* NP: sys/time.h is provided by libcompat */
985c86bc 18
cc192b50 19/* globals for accessing time */
20extern struct timeval current_time;
21extern double current_dtime;
25f98340 22extern time_t squid_curtime;
985c86bc 23
24time_t getCurrentTime(void);
25f98340 25int tvSubMsec(struct timeval, struct timeval);
985c86bc 26
01bd87d8
CT
27/// timeval substraction operation
28/// \param[out] res = t2 - t1
29void tvSub(struct timeval &res, struct timeval const &t1, struct timeval const &t2);
30
31/// timeval addition operation
32/// \param[out] res = t1 + t2
33void tvAdd(struct timeval &res, struct timeval const &t1, struct timeval const &t2);
34
35/// timeval addition assignment operation
36/// \param[out] t += add
37void tvAssignAdd(struct timeval &t, struct timeval const &add);
38
39/// Convert timeval to milliseconds
40inline long int tvToMsec(struct timeval &t)
41{
42 return t.tv_sec * 1000 + t.tv_usec / 1000;
43}
44
e1a88700 45/** event class for doing synthetic time etc */
8ff3fa2e 46class TimeEngine
47{
48
49public:
50 virtual ~TimeEngine();
e1a88700 51
52 /** tick the clock - update from the OS or other time source, */
8ff3fa2e 53 virtual void tick();
54};
55
20efa1c2
AJ
56namespace Time
57{
58
59/** Display time as a formatted human-readable string.
60 * Time syntax is
61 * "YYYY/MM/DD hh:mm:ss"
62 *
63 * Output is only valid until next call to this function.
64 */
65const char *FormatStrf(time_t t);
66
67/** Display time as a formatted human-readable string.
68 * Time string syntax used is that of Apache httpd.
69 * "DD/MMM/YYYY:hh:mm:ss zzzz"
70 *
71 * Output is only valid until next call to this function.
72 */
73const char *FormatHttpd(time_t t);
74
75} // namespace Time
76
985c86bc 77#endif /* SQUID_TIME_H */
f53969cc 78