|
@@ -19,6 +19,44 @@
|
|
|
#include "helpers.hpp"
|
|
|
#include <ctime>
|
|
|
|
|
|
+#if _WIN32
|
|
|
+// taken from https://stackoverflow.com/questions/10905892/equivalent-of-gettimeday-for-windows
|
|
|
+
|
|
|
+#include <Windows.h>
|
|
|
+
|
|
|
+struct timezone {
|
|
|
+ int tz_minuteswest;
|
|
|
+ int tz_dsttime;
|
|
|
+};
|
|
|
+int gettimeofday(struct timeval *tv, struct timezone *tz)
|
|
|
+{
|
|
|
+ if (tv) {
|
|
|
+ FILETIME filetime; /* 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 00:00 UTC */
|
|
|
+ ULARGE_INTEGER x;
|
|
|
+ ULONGLONG usec;
|
|
|
+ static const ULONGLONG epoch_offset_us = 11644473600000000ULL; /* microseconds betweeen Jan 1,1601 and Jan 1,1970 */
|
|
|
+
|
|
|
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
|
|
|
+ GetSystemTimePreciseAsFileTime(&filetime);
|
|
|
+#else
|
|
|
+ GetSystemTimeAsFileTime(&filetime);
|
|
|
+#endif
|
|
|
+ x.LowPart = filetime.dwLowDateTime;
|
|
|
+ x.HighPart = filetime.dwHighDateTime;
|
|
|
+ usec = x.QuadPart / 10 - epoch_offset_us;
|
|
|
+ tv->tv_sec = (time_t)(usec / 1000000ULL);
|
|
|
+ tv->tv_usec = (long)(usec % 1000000ULL);
|
|
|
+ }
|
|
|
+ if (tz) {
|
|
|
+ TIME_ZONE_INFORMATION timezone;
|
|
|
+ GetTimeZoneInformation(&timezone);
|
|
|
+ tz->tz_minuteswest = timezone.Bias;
|
|
|
+ tz->tz_dsttime = 0;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
using namespace std;
|
|
|
using namespace rtc;
|
|
|
|