(THRIFT-69) Fix Util::currentTime for use in applications.
authorDavid Reiss <dreiss@apache.org>
Fri, 11 Jul 2008 00:45:29 +0000 (00:45 +0000)
committerDavid Reiss <dreiss@apache.org>
Fri, 11 Jul 2008 00:45:29 +0000 (00:45 +0000)
This function didn't work properly when used outside of the Thrift library
because config.h isn't available.  This patch fixes the issue by moving
the function definition into the library.

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@675819 13f79535-47bb-0310-9956-ffa450edef68

lib/cpp/Makefile.am
lib/cpp/src/concurrency/Util.cpp [new file with mode: 0644]
lib/cpp/src/concurrency/Util.h

index 5ba3f64..96e44e8 100644 (file)
@@ -28,6 +28,7 @@ libthrift_la_SOURCES = src/Thrift.cpp \
                        src/concurrency/PosixThreadFactory.cpp \
                        src/concurrency/ThreadManager.cpp \
                        src/concurrency/TimerManager.cpp \
+                       src/concurrency/Util.cpp \
                        src/protocol/TBinaryProtocol.cpp \
                        src/protocol/TDebugProtocol.cpp \
                        src/protocol/TDenseProtocol.cpp \
diff --git a/lib/cpp/src/concurrency/Util.cpp b/lib/cpp/src/concurrency/Util.cpp
new file mode 100644 (file)
index 0000000..eeee0e5
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright (c) 2006- Facebook
+// Distributed under the Thrift Software License
+//
+// See accompanying file LICENSE or visit the Thrift site at:
+// http://developers.facebook.com/thrift/
+
+#include "Util.h"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#if defined(HAVE_CLOCK_GETTIME)
+#include <time.h>
+#elif defined(HAVE_GETTIMEOFDAY)
+#include <sys/time.h>
+#endif // defined(HAVE_CLOCK_GETTIME)
+
+namespace facebook { namespace thrift { namespace concurrency {
+
+const int64_t Util::currentTime() {
+  int64_t result;
+
+#if defined(HAVE_CLOCK_GETTIME)
+  struct timespec now;
+  int ret = clock_gettime(CLOCK_REALTIME, &now);
+  assert(ret == 0);
+  toMilliseconds(result, now);
+#elif defined(HAVE_GETTIMEOFDAY)
+  struct timeval now;
+  int ret = gettimeofday(&now, NULL);
+  assert(ret == 0);
+  toMilliseconds(result, now);
+#else
+#error "No high-precision clock is available."
+#endif // defined(HAVE_CLOCK_GETTIME)
+
+  return result;
+}
+
+
+}}} // facebook::thrift::concurrency
index 4031be0..483d14a 100644 (file)
@@ -7,17 +7,11 @@
 #ifndef _THRIFT_CONCURRENCY_UTIL_H_
 #define _THRIFT_CONCURRENCY_UTIL_H_ 1
 
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
 #include <assert.h>
 #include <stddef.h>
-#if defined(HAVE_CLOCK_GETTIME)
+#include <stdint.h>
 #include <time.h>
-#else // defined(HAVE_CLOCK_GETTIME)
 #include <sys/time.h>
-#endif // defined(HAVE_CLOCK_GETTIME)
 
 namespace facebook { namespace thrift { namespace concurrency {
 
@@ -86,24 +80,7 @@ class Util {
   /**
    * Get current time as milliseconds from epoch
    */
-  static const int64_t currentTime() {
-    int64_t result;
-
-#if defined(HAVE_CLOCK_GETTIME)
-    struct timespec now;
-    int ret = clock_gettime(CLOCK_REALTIME, &now);
-    assert(ret == 0);
-    toMilliseconds(result, now);
-#elif defined(HAVE_GETTIMEOFDAY)
-    struct timeval now;
-    int ret = gettimeofday(&now, NULL);
-    assert(ret == 0);
-    toMilliseconds(result, now);
-#endif // defined(HAVE_GETTIMEDAY)
-
-    return result;
-  }
-
+  static const int64_t currentTime();
 };
 
 }}} // facebook::thrift::concurrency