summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/librdkafka-2.1.0/win32/wintime.h
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/librdkafka-2.1.0/win32/wintime.h')
-rw-r--r--fluent-bit/lib/librdkafka-2.1.0/win32/wintime.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/fluent-bit/lib/librdkafka-2.1.0/win32/wintime.h b/fluent-bit/lib/librdkafka-2.1.0/win32/wintime.h
new file mode 100644
index 000000000..07f55b8b1
--- /dev/null
+++ b/fluent-bit/lib/librdkafka-2.1.0/win32/wintime.h
@@ -0,0 +1,33 @@
+/**
+ * Copyright: public domain
+ */
+#pragma once
+
+/**
+ * gettimeofday() for Win32 from
+ * http://stackoverflow.com/questions/10905892/equivalent-of-gettimeday-for-windows
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdint.h> // portable: uint64_t MSVC: __int64
+
+static int gettimeofday(struct timeval *tp, struct timezone *tzp) {
+ // Note: some broken versions only have 8 trailing zero's, the correct
+ // epoch has 9 trailing zero's This magic number is the number of 100
+ // nanosecond intervals since January 1, 1601 (UTC) until 00:00:00
+ // January 1, 1970
+ static const uint64_t EPOCH = ((uint64_t)116444736000000000ULL);
+
+ SYSTEMTIME system_time;
+ FILETIME file_time;
+ uint64_t time;
+
+ GetSystemTime(&system_time);
+ SystemTimeToFileTime(&system_time, &file_time);
+ time = ((uint64_t)file_time.dwLowDateTime);
+ time += ((uint64_t)file_time.dwHighDateTime) << 32;
+
+ tp->tv_sec = (long)((time - EPOCH) / 10000000L);
+ tp->tv_usec = (long)(system_time.wMilliseconds * 1000);
+ return 0;
+}